Android 判断是否有录音权限
最近在项目中要用到语音通话功能,后来测试发现通话过程中有听不到对方声音的情况,经过检测 其中有部分原因是因为有些手机在app安装后会被手机直接禁止录音权限,发现问题后去解决的过程发现,系统自己提供的检查app所获的权限方法
boolean flag = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("Android.permission.RECORD_AUDIO", "包名"));
boolean flag = PermissionChecker.checkSelfPermission(this, Manifest.permission.)== PermissionChecker.PERMISSION_GRANTED;
if (flag){
ToastUtil.showMessage("有权限");
}else {
ToastUtil.showMessage("无权限");
return;
}
在6.0系统一下 无论是关闭或者打开app的录音权限都能获取到权限,6.0以上则正常,后来发现是6.0以后google加强了权限管理,6.0之前的权限检测只是检测到是否在清单文件中注册,这个方法显示不适用于目前自己的项目,后来经过一番查找终于找到了一个通用的方法
// 音频获取源public static int audioSource = MediaRecorder.AudioSource.MIC;// 设置音频采样率,44100是目前的标准,但是某些设备仍然支持22050,16000,11025public static int sampleRateInHz = 44100;// 设置音频的录制的声道CHANNEL_IN_STEREO为双声道,CHANNEL_CONFIGURATION_MONO为单声道public static int channelConfig = AudioFormat.CHANNEL_IN_STEREO;// 音频数据格式:PCM 16位每个样本。保证设备支持。PCM 8位每个样本。不一定能得到设备支持。public static int audioFormat = AudioFormat.ENCODING_PCM_16BIT;// 缓冲区字节大小public static int bufferSizeInBytes = 0;/*** 判断是是否有录音权限*/public static boolean isHasPermission(final Context context){bufferSizeInBytes = 0;bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz,channelConfig, audioFormat);AudioRecord audioRecord = new AudioRecord(audioSource, sampleRateInHz,channelConfig, audioFormat, bufferSizeInBytes);//开始录制音频try{// 防止某些手机崩溃,例如联想audioRecord.startRecording();}catch (IllegalStateException e){e.printStackTrace();}/*** 根据开始录音判断是否有录音权限*/if (audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) {DialogUtils.createDialogBox3(context, "", context.getResources().getString(R.string.setting_tips), context.getResources().getString(R.string.cancel), context.getResources().getString(R.string.setting), new DialogUtils.DialogOnClick() {@Overridepublic void leftOnClick() {}@Overridepublic void rightOnClick() {context.startActivity(new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS));}});return false;}audioRecord.stop();audioRecord.release();audioRecord = null;return true;}
经过测试 这个方法目前能试用于所有机型..
Android 判断是否有录音权限相关推荐
- android获取录音读写权限设置,Android编程检测手机录音权限是否打开的方法
本文实例讲述了Android编程检测手机录音权限是否打开的方法.分享给大家供大家参考,具体如下: 6.0之前的权限检测只是检测到是否在清单文件中注册 Boolean flag = (PackageMa ...
- android 录音权限 代码打开,Android编程检测手机录音权限是否打开的方法
本文实例讲述了Android编程检测手机录音权限是否打开的方法.分享给大家供大家参考,具体如下: 6.0之前的权限检测只是检测到是否在清单文件中注册 Boolean flag = (PackageMa ...
- 【Android】5.0录音权限处理时遇到的问题
公司项目有这样一个功能:按住button开始录音,同时弹出一个提示录音进度的dialog,松开button时录音结束. 但是发现在5.0中第一次用时会有问题,按住button时系统会弹出一个权限申请的 ...
- android 动态录音权限,Android如何判断手机是否有录音权限的工具类
作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android ...
- 判断Android手机是否有录音
作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android ...
- android设置录音权限设置,android录音权限提示体验,自认比较优雅的解决方法!
场景:项目仿照github上的一个ChatDemo( https://github.com/Maxi-Mao/ChatDemo ,给出链接感谢作者的开源代码对我项目的帮助!)中的代码实现录音功能,昨晚 ...
- android 权限录音权限检测
最近在项目中要用到语音通话功能,后来测试发现通话过程中有听不到对方声音的情况,经过检测 其中有部分原因是因为有些手机在app安装后会被手机直接禁止录音权限,发现问题后去解决的过程发现,系统自己提供的检 ...
- Android存储、摄像头、录音权限检查,适配小米、vivo 、oppo、锤子、魅族、联想等机型和6.0以下系统
Android 6.0以上检测权限用ActivityCompat.checkSelfPermission(context,permissionCode)或ContextCompat.checkSelf ...
- 录音权限与摄像头权限
(一).Android录音权限被禁解决方案 大家在做Android录音的时候会碰到权限被禁止的情况出现,当用户禁止了录音权限的时候我们为了界面友好会提示用户,但是安卓机型很多,有些机型在录音start ...
最新文章
- 【深度学习】(3) 全连接层、激活函数
- 一句话总结等距映射(流形学习)
- TMG标准版轻松升级到企业版---TMG 2010 系列之四
- 源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护
- webpack常用命令总结
- 百度指数可视化_可视化指数
- DOS命令未公开的命令
- 用Sass创建MetaFizzy效果
- MVC与MVVM的区别
- discuz的ajax,discuz分页函数改成基于jqueryd的ajax分页函数
- STM32工作笔记0077---UCOSIII中使用串口发送数据要注意的点
- Haproxy负载均衡详解,与keepalived的搭配
- NumberFormat格式化数字
- Mac好用的硬盘数据恢复软件推荐
- 【HTML 教程系列第 10 篇】什么是 HTML 中的水平线标签 hr
- Enter的使用计算机,Win7系统下键盘Enter回车键五大功能介绍
- VSPD+XCOM+Proteus仿真stm32串口通信
- 运用javascript的成员访问特性来实现通用版的兼容所有浏览器的打开对话框功能...
- 计算机专业毕业设计—JAVA语言系统设计(共80套打包)
- JS中被误解的else if语句