安卓系统中,当其他应用正在使用麦克风时无法访问麦克风

9
我正在使用以下URL中的代码,通过AudioRecord从麦克风获取声音数据:http://www.dreamincode.net/forums/topic/303235-visualizing-sound-from-the-microphone/ 问题是如果另一个应用程序也在使用麦克风,我会从AudioRecord收到错误(状态为-3)。如果我关闭正在使用麦克风的其他应用程序,一切都按预期工作。是否有一个优雅的解决方案,允许我的应用程序访问麦克风,即使另一个应用程序已经在使用它?
谢谢。

更多信息:AudioRecord.read返回-3,我认为这意味着它读取了零字节。 - codeman
您想要切换使用麦克风的应用程序,还是同时允许它们使用?如果是后者,则这是共享音频输入?的重复。简而言之,一次只能有一个应用程序使用它。 - Geobits
我想切换使用麦克风的应用程序。我以为前台的应用程序会控制麦克风,但似乎无论哪个应用程序先占用了它,都将保持控制权。感谢任何帮助。 - codeman
2个回答

10

遗憾的是,同一时间只有一个应用程序可以访问麦克风(就像相机一样)。

此外,目前还没有标准的方法来通知其他应用程序你想要访问麦克风(以便它们释放资源并让你访问)。但你可以向所有其他应用程序发送广播(“请求麦克风”),但其他应用程序必须实现此功能(而且很少或没有开发者会这样做)。

我建议你简单地告知用户麦克风当前无法使用,因为你不能做任何其他事情。


1
谢谢。最终我只是告诉用户无法访问麦克风,就像你说的那样,并关闭正在使用它的任何其他应用程序。一旦他们回到我的应用程序,我会重新启动对麦克风的访问权限。 - codeman
我如何成为这里的另一个应用程序?如果我想要实现当我接收到广播时放弃麦克风资源的功能,该怎么做? - Lena Bru

3
如果您使用“OK Google”功能,并带有从任何页面访问的选项,请尝试关闭该选项(Google应用屏幕菜单>设置>语音>“OK GOOGLE检测”>从任何屏幕=关闭),它会劫持麦克风,或可能会这样做。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接