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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。