Android内置麦克风发布问题

时间:2016-08-15 17:47:33

标签: android microphone

我有一个非常有趣的问题。

我的印象是,当我的应用程序使用麦克风时,Android系统进程(如传入或传出呼叫)需要麦克风,我的应用程序会毫不考虑地发布它。

但我想这不再是问题,因为我收到的抱怨很少,当使用该应用程序并且有来电时,通话中的另一方听不到。

有没有办法确保系统进程何时请求释放麦克风?

3 个答案:

答案 0 :(得分:5)

目前,无法检查其他应用是否请求麦克风。但是,有一些解决方法:

  • 如果您在活动中录制声音,只需在onPause()中释放麦克风,以便前台应用可以使用它。如果您在后台服务中录制音频,则无效。
  • 有来电时暂停录音。要检测传入(和传出)呼叫,请查看this excellent answer。通话结束后,恢复录音。
  • 肮脏的黑客:如果检测到来电不够,您可以遍历所有正在运行的应用,看看他们是否拥有麦克风权限。只要具有麦克风权限的应用程序正在运行,请暂停录制。获取所有运行的应用程序可能很困难有关更多信息,请查看herehereherehere for checking the permissions

答案 1 :(得分:0)

据我所知,没有办法知道麦克风的状态是忙碌的,可用的还是如果有人请求,因为它是某种方式的责任系统管理流程和资源,所以记住这一点,你不能永远保持麦克风,所以你无法控制它意味着你无法管理和检测资源请求。以下是一些可能有帮助的信息你。

您可以尝试的是,克服所有可能性,当系统可以使用麦克风设置广播接收器进行呼叫广播时以及当他们触发释放麦克风时,当呼叫完成后,您可以再次获取它。

答案 2 :(得分:0)

在我的情况下,我创建了后台线程,用于检查来自麦克风的传入位。如果它们为零(或数秒滞后),应用程序会中断该过程。然而,当然,这不是一个“好”的解决方案,但可能会有所帮助。