Android如何判断手机是否有录音权限的工具类
作用
判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统
测试环境
这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android7.1的系统。
记得在清单文件中配置对应的权限。
思路
检测是否有权限
-->有权限--执行相关操作
-->无权限--判断系统版本
--大于等于6.0--动态申请权限
-->对申请结果的回调处理
--允许
--拒绝
代码
工具类CheckAudioPermission.java
packagecom.example.a002034.testaudioperrmission; importandroid.content.Context; importandroid.media.AudioFormat; importandroid.media.AudioRecord; importandroid.media.MediaRecorder; /** *Function:判断录音权限,兼容android6.0以下以及以上系统 * *@authorxuzhuyun *@date2018/5/10 */ publicclassCheckAudioPermission{ /** *音频获取源 */ publicstaticintaudioSource=MediaRecorder.AudioSource.MIC; /** *设置音频采样率,44100是目前的标准,但是某些设备仍然支持22050,16000,11025 */ publicstaticintsampleRateInHz=44100; /** *设置音频的录制的声道CHANNEL_IN_STEREO为双声道,CHANNEL_CONFIGURATION_MONO为单声道 */ publicstaticintchannelConfig=AudioFormat.CHANNEL_IN_STEREO; /** *音频数据格式:PCM16位每个样本。保证设备支持。PCM8位每个样本。不一定能得到设备支持。 */ publicstaticintaudioFormat=AudioFormat.ENCODING_PCM_16BIT; /** *缓冲区字节大小 */ publicstaticintbufferSizeInBytes=0; publicstaticAudioRecordaudioRecord; /** *判断是是否有录音权限. */ publicstaticbooleanisHasPermission(finalContextcontext){ bufferSizeInBytes=0; bufferSizeInBytes=AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig,audioFormat); if(audioRecord==null){ audioRecord=newAudioRecord(audioSource,sampleRateInHz,channelConfig,audioFormat,bufferSizeInBytes); } //开始录制音频 try{ //防止某些手机崩溃,例如联想 audioRecord.startRecording(); }catch(IllegalStateExceptione){ e.printStackTrace(); } /** *根据开始录音判断是否有录音权限s */ if(audioRecord.getRecordingState()!=AudioRecord.RECORDSTATE_RECORDING){ returnfalse; } audioRecord.stop(); //释放资源 audioRecord.release(); audioRecord=null; returntrue; } }
测试类MainActivity
packagecom.example.a002034.testaudioperrmission; importandroid.Manifest; importandroid.content.pm.PackageManager; importandroid.os.Build; importandroid.support.annotation.NonNull; importandroid.support.v4.content.ContextCompat; importandroid.support.v7.app.AppCompatActivity; importandroid.os.Bundle; importandroid.util.Log; /** *desc:测试录音权限. *steps: *检测是否有权限--有--执行相关操作 *--无权限-- **--判断系统版本 *--小于6.0直接获取 *--大于6.0动态申请权限 *--对申请结果的处理回调 *
*--允许 *
*--拒绝 *
*test: *test1build.gradleminsdk<23真机android7.1清单文件中配置了录音权限 *test2build.gradleminsdk>=23真机android7.1清单文件中配置了录音权限 * *@authorxuzhuyun *@date2018/5/10 */ publicclassMainActivityextendsAppCompatActivity{ privatestaticfinalStringTAG="MainActivity"; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //检测是否有录音权限 if(ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUDIO) !=PackageManager.PERMISSION_GRANTED){ Log.i(TAG,"默认无录音权限"); if(Build.VERSION.SDK_INT>=23){ Log.i(TAG,"系统版本不低于android6.0,需要动态申请权限"); requestPermissions(newString[]{Manifest.permission.RECORD_AUDIO},1001); } }else{ Log.i(TAG,"默认有录音权限"); } } @Override publicvoidonRequestPermissionsResult(intrequestCode,@NonNullString[]permissions, @NonNullint[]grantResults){ super.onRequestPermissionsResult(requestCode,permissions,grantResults); if(requestCode==1001){ //方式一校验 booleanisHasAudioPermission=CheckAudioPermission.isHasPermission(this); Log.i(TAG,"申请权限完毕,当前录音权限:"+isHasAudioPermission); //方式二校验 intresult=0; for(inti=0;i
源码下载:Android如何判断手机是否有录音
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。