场景:项目仿照github上的一个ChatDemo( https://github.com/Maxi-Mao/ChatDemo ,给出链接感谢作者的开源代码对我项目的帮助!)中的代码实现录音功能,昨晚,发现项目中的录音功能在首次使用时会弹出提示,提示用户是否开启录音权限.随后点击开启后,马上就会提示录音失败,然后再录音也会失败!直到几次后才会成功!如果直接点击拒绝授予权限,则项目会直接崩溃.

分析:可能是由于点击录音的时候,没有权限,导致android系统弹出提示窗,而在弹窗的同时,录音并没有停止.而且录音前缺少了权限的判断才会出现上述问题.

最后和同事尝试了解决后,认为解决方法还可以,决定分享给大家.

思路:在点击录音弹出权限弹窗前,先判断是否开启录音权限.如果没有开启录音权限,就开启一段虚拟(假录音),这时就会弹出权限提示了.而真的录音又没有被触发,只有有权限后真的录音才会被触发.这样就完美的解决了以上问题.

1)首先,定义一个返回boolean值得方法,判断是否已经开启录音权限.

private boolean voicePermission(){

return (PackageManager.PERMISSION_GRANTED == ContextCompat.

checkSelfPermission(MyApplication.appContext, android.Manifest.permission.RECORD_AUDIO));

}

2)然后再开始点击录音的时候写入

if (!voicePermission()){//没有权限,自己写一段假的录音代码,这段录音代码其实无效.

MediaRecorder recorder = new MediaRecorder();

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

recorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);

recorder.setAudioChannels(1);

recorder.setAudioSamplingRate(8000);

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

recorder.setOutputFile(DataURI.CreateTempFileName(""));//这里给个假的地址,因为这段录音是无效的.

try {

recorder.prepare();

recorder.start();//要开始录音时,这里就会弹出提示框了,如果不给权限.我们有异常处理,而且下次想录音时 还是会有此提示.

recorder.stop();

recorder.release();

} catch (IOException e) {

e.printStackTrace();

}

return false;//这里是因为外层层是一个长按事件,返回false表示处理过了(OnLongClickListener).

}

......//上述代码后 就是项目中真正的录音代码了.

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

  1. android 百度地图闪退,Android使用百度地图出现闪退及定位时显示蓝屏问题的解决方法...

    使用百度地图出现闪退 一般情况下出现闪退是在AndroidManifest.xml文件中未在application标签中配置 android:name="com.baidu.lbsapi.A ...

  2. 某个应用导致html文件,某个应用导致你的默认浏览器设置出现问题(补丁又闯祸:Windows 10默认应用被重置 附解决方法)...

    某个应用导致你的默认浏览器设置出现问题(补丁又闯祸:Windows 10默认应用被重置 附解决方法),哪吒游戏网给大家带来详细的某个应用导致你的默认浏览器设置出现问题(补丁又闯祸:Windows 10 ...

  3. Android调用系统群发短信,vivo部分手机弹出“无效的地址”解决方法

    Android调用系统群发短信,vivo部分手机弹出"无效的地址"解决方法 第一次写文章,来试试水 之前项目中有一个需求是获取通讯录联系人信息,并展示出来,然后可以选择一个或者多个 ...

  4. 华为android9手机短信不提醒设置,华为手机微信不提醒怎么办 华为收不到微信提示信息多种解决方法...

    到底是哪里出了问题呢?捣鼓了半天,宝宝终于发现了,原来微信收不到消息竟是因为设置有误. 有同遭遇的亲们看这里吧,快快get新技能吧~ 华为收不到微信提示信息多种解决方法 请确认以下事项: 确认已开启通 ...

  5. Android Studio-Didn't find class XXX on path: DexPathList [zip file /data/xxx/base.apk]解决方法

    OPPO R11 手机运行应用,打开app直接闪退,界面进都进不去.错误信息如下: --------- beginning of crash 2019-03-22 13:33:21.065 22665 ...

  6. android studio 运行闪退,ubuntu上在androidstudio中启动emulator闪退的解决方法

    阅读目录(Content) 平台 现象 解决 一.查看模拟器的信息 二.命令行运行模拟器 平台 Ubuntu14.04 64 现象 在AndrodStudio中点击模拟器的启动按钮后,模拟器界面弹出后 ...

  7. android qq三方登录授权失败,QQ第三方登录无法授权错误码110401的解决方法

    原标题:QQ第三方登录无法授权错误码110401的解决方法 一些网友在注册APP的时候,会选择QQ作为第三方登录方式,但是,最近,一些网友发现:选择QQ第三方登录的时候,会出现无法授权错误码11040 ...

  8. 获取android 默认的机器人图标,APP桌面只显示默认机器人图标的几个解决方法

    Android Studio 3.0以上 android系统8.0以上桌面logo显示问题 问题 app运行在8.0以上部分手机桌面logo始终显示系统logo,无论如何更改mipmap对应文件夹下的 ...

  9. Android输入法弹出时把布局顶上去和登录按钮顶上去的解决方法

    背景:在写登录界面时,老板就觉得在输入密码的时候谈出来的输入法软键盘把登录按钮遮挡住了(入下图所示,不爽),连输入框都被挡了一半,于是不满意了,要叫我改,于是我看QQ的登录效果,我就去研究了一下,弹出 ...

最新文章

  1. Leetcode 173. 二叉搜索树迭代器 解题思路及C++实现
  2. Android中activity传值的两种方式
  3. Android资源文件在配置文件中的使用
  4. Markdown编译器插入公式的数学符号及字体颜色、背景
  5. 广度优先搜索(BFS)与深度优先搜索(DFS)
  6. MySQL入门之事件
  7. sql出现列名无效的原因_学会SQL并不难,小白学习记录之二(简单查询)
  8. echarts中国地图下钻到区
  9. 计算机组成原理——CPU
  10. 正定矩阵与半正定矩阵定义性质与理解
  11. 一个漂亮的电子数字字体分享electronicFont
  12. python3解压zip_python3:rar解压缩
  13. 51单片机定时器 TMOD、TCON设置_codestorm_新浪博客
  14. LeetCode: 868. Binary Gap
  15. 抖音表情包小程序,抖音广告流量主玩法
  16. NVIDIA NCCL 源码学习(二)- bootstrap网络连接的建立
  17. 在手机上图片分辨率怎么调?怎样用手机改300dpi图片?
  18. 黑苹果 10G 网卡(intel Aquantia)解决方案及big sur 11.x 下驱动方式
  19. 西北大学发布猴脸识别论文,公开 10 种动物面部数据集
  20. 怎样关闭任务栏的Microsoft资讯

热门文章

  1. [GUI] ESP32(idf)驱动3.5寸SPI-TFT屏移植LittleVGL
  2. 目标连连看 消除不靠谱的建站因子
  3. 模拟黑洞图像_nasa绘制黑洞图像(这次我终于看到了! NASA模拟的黑洞高清令人震惊的画面,令人窒息!)...
  4. Docker容器之Docker Swarm集群详解(下)
  5. 回头客会员管理系统关于会员的操作介绍
  6. 怎么用PDF24 Tools工具在线进行PDF文件合并
  7. 物联网快速改变各行业,物联网软件开发过程中,主要面临哪些挑战?
  8. 卸载干净anconda
  9. Acwing---844. 走迷宫——BFS
  10. Android设计模式与应用场景