Android 不通话时将麦克风静音

Android mute microphone while not in call

我想将 microphone 静音一段时间,比如说一天。但是,当用户拨打电话或有人打电话时,我想启用 microphone 并在之后禁用它。我这样做了:

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
audioManager.setMicrophoneMute(true);

此代码在调用后的情况下有效。调用后,microphone 被启用。我怀疑 phone 应用程序可以再次启用 microphone,其他应用程序也可以。调用后如何让microphone静音?有没有办法限制其他应用启用microphone?

很明显,Phone 应用程序在 answer/plac 通话前启用了麦克风,但它不会恢复之前的状态,因为麦克风的正常状态是启用。

您可以使用两种不同的方法:(1) 设置侦听器来检测语音通话结束并恢复之前的状态,或者 (2) 如果您的设备具有 Root 权限并且麦克风位于 "dev/inout/eventX" 中(其中"X" 是一个累进数字,但它在设备之间甚至在重新启动之间是不同的)你可以在独占模式下打开它,这样在你释放 [=18= 之前没有人可以再次 open/use 它].但是,如果应用程序(按下录制按钮时的 Phone 应用程序或 WhatsApp)可能会崩溃,如果它不能很好地处理这种情况。

但是我会注意到您 "AudioManager.setMicrophoneMute()" 依赖于实现并且不能在所有 Android 版本上工作(它取决于 Minifacturer)。