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

场景:项目仿照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).

}

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

`py2app`是一个用于将Python应用程序转换为独立的MacOS应用 bundles 的工具,并不是专门针对`.pyc`文件打包设计的。通常我们使用它来打包包含`.py`源码文件的应用程序。 如果你想通过`py2app`打包项目,在项目的根目录创建一个setup.py文件,内容类似于下面的例子: ```python from setuptools import setup APP = ['your_main_script.py'] DATA_FILES = [] OPTIONS = {'argv_emulation': True} setup( app=APP, data_files=DATA_FILES, options={'py2app': OPTIONS}, setup_requires=['py2app'], ) ``` 然后你可以运行命令 `python setup.py py2app` 来构建你的应用。需要注意的是,默认情况下`py2app`会处理整个依赖树并包括所有必要的 `.pyc` 文件以及其它资源作为一部分生的应用包的一部分;因此你不需要直接提供.pyc文件给这个过程 - 只需指定主脚本即可。 不过要注意几个点: - 如果你想强制只使用字节编译后的(.pyc)版本而不是原始源代码(.py),可以在环境中设置 PYTHONDONTWRITEBYTECODE 环境变量等于非零值(比如1), 或者可以尝试修改site.py以禁止 .pyc 文件的写入。 - 还有一点值得注意的是,从 Python文件 (.py) 创建的二进制分发版 (无论是 exe、app bundle还是其他形式) 并不会提高执行速度; 它们主要是为了方便部署或隐藏源代码. 最后提醒一下,对于最新的 python 版本来说,可能需要考虑是否仍然支持旧版本如 Python 2.x的问题,因为很多现代工具已经不再维护对它的兼容了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值