最近在项目中要用到语音通话功能,后来测试发现通话过程中有听不到对方声音的情况,经过检测 其中有部分原因是因为有些手机在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 判断是否有录音权限相关推荐

  1. android获取录音读写权限设置,Android编程检测手机录音权限是否打开的方法

    本文实例讲述了Android编程检测手机录音权限是否打开的方法.分享给大家供大家参考,具体如下: 6.0之前的权限检测只是检测到是否在清单文件中注册 Boolean flag = (PackageMa ...

  2. android 录音权限 代码打开,Android编程检测手机录音权限是否打开的方法

    本文实例讲述了Android编程检测手机录音权限是否打开的方法.分享给大家供大家参考,具体如下: 6.0之前的权限检测只是检测到是否在清单文件中注册 Boolean flag = (PackageMa ...

  3. 【Android】5.0录音权限处理时遇到的问题

    公司项目有这样一个功能:按住button开始录音,同时弹出一个提示录音进度的dialog,松开button时录音结束. 但是发现在5.0中第一次用时会有问题,按住button时系统会弹出一个权限申请的 ...

  4. android 动态录音权限,Android如何判断手机是否有录音权限的工具类

    作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android ...

  5. 判断Android手机是否有录音

    作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android ...

  6. android设置录音权限设置,android录音权限提示体验,自认比较优雅的解决方法!

    场景:项目仿照github上的一个ChatDemo( https://github.com/Maxi-Mao/ChatDemo ,给出链接感谢作者的开源代码对我项目的帮助!)中的代码实现录音功能,昨晚 ...

  7. android 权限录音权限检测

    最近在项目中要用到语音通话功能,后来测试发现通话过程中有听不到对方声音的情况,经过检测 其中有部分原因是因为有些手机在app安装后会被手机直接禁止录音权限,发现问题后去解决的过程发现,系统自己提供的检 ...

  8. Android存储、摄像头、录音权限检查,适配小米、vivo 、oppo、锤子、魅族、联想等机型和6.0以下系统

    Android 6.0以上检测权限用ActivityCompat.checkSelfPermission(context,permissionCode)或ContextCompat.checkSelf ...

  9. 录音权限与摄像头权限

    (一).Android录音权限被禁解决方案 大家在做Android录音的时候会碰到权限被禁止的情况出现,当用户禁止了录音权限的时候我们为了界面友好会提示用户,但是安卓机型很多,有些机型在录音start ...

最新文章

  1. 【深度学习】(3) 全连接层、激活函数
  2. 一句话总结等距映射(流形学习)
  3. TMG标准版轻松升级到企业版---TMG 2010 系列之四
  4. 源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护
  5. webpack常用命令总结
  6. 百度指数可视化_可视化指数
  7. DOS命令未公开的命令
  8. 用Sass创建MetaFizzy效果
  9. MVC与MVVM的区别
  10. discuz的ajax,discuz分页函数改成基于jqueryd的ajax分页函数
  11. STM32工作笔记0077---UCOSIII中使用串口发送数据要注意的点
  12. Haproxy负载均衡详解,与keepalived的搭配
  13. NumberFormat格式化数字
  14. Mac好用的硬盘数据恢复软件推荐
  15. 【HTML 教程系列第 10 篇】什么是 HTML 中的水平线标签 hr
  16. Enter的使用计算机,Win7系统下键盘Enter回车键五大功能介绍
  17. VSPD+XCOM+Proteus仿真stm32串口通信
  18. 运用javascript的成员访问特性来实现通用版的兼容所有浏览器的打开对话框功能...
  19. 计算机专业毕业设计—JAVA语言系统设计(共80套打包)
  20. JS中被误解的else if语句

热门文章

  1. 汇编中PSP是什么?为什么一般cs比ds大10h
  2. 南京繁华商圈被遗忘的角落
  3. vsftpd 配置文件参数大全
  4. 【论文笔记】Aleph_star
  5. NodeJS 基于API v3 实现微信小程序的支付
  6. WSL如何帮我从MacOS回归Windows
  7. 七星在线主线科技反复走强
  8. 登陆验证发展史(cookie认证->session认证->token认证->JWT,单系统登陆->多系统单点登陆)
  9. 大数据和云计算和数据挖掘的关系?
  10. 判断ip是固定ip地址还是动态ip