android 使用AudioRecord 遇到录音权限被禁用


Hi guys, 有谁和我一样遇到录音权限被禁用,但是一直想知道怎样检测该权限是否被禁用?现在我遇到的最头疼的是小米系统,貌似无解,不知道有没有大神可以指点一二,谢谢~

补充一些我的尝试过的:
1、MediaRecorder。小米禁用录音权限,但是

   
  mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)
 

不会抛异常,但是实际上根本没有音频数据输出,或者输出的都是0。我们不能用音频数据都是0的情况来作判断,因为觉得不靠谱。
2、AudioRecord。小米的

   
  audioRecorder.getRecordingState()
 

总是返回3,也就是正在录制状态,但是实际上根本没有音频数据输出,或者输出的都是0。我们不能用音频数据都是0的情况来作判断,因为觉得不靠谱。



相关链接

Android android安全

德国boy  10 years, 2 months ago

我们也遇到同样的问题,我们组有几个是专门做声学的博士,他们回复:只要有麦克风打开,并且开始录音,就不可能录到的声音数值全为0。所以,按照输出是否一直全为0,来判断小米手机的录音权限是否被禁用,是靠谱的。
只不过,这种方法只能判断出来小米的。至于魅族等手机,录音被禁用的话,会直接初始化时报错,但出错信息跟普通的录音异常一样,很难辨出真的初始化失败了还是录音被禁用导致的。

egl_had answered 10 years, 1 month ago

Your Answer