【问题标题】:Android mute microphone while not in call未通话时 Android 将麦克风静音
【发布时间】:2018-08-23 08:58:01
【问题描述】:

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

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

此代码在通话后的情况下有效。通话结束后,麦克风启用。我怀疑手机应用程序可以再次启用麦克风,其他应用程序也可以。通话后如何使麦克风静音?有没有办法限制其他应用程序启用麦克风?

【问题讨论】:

    标签: android microphone android-audiomanager


    【解决方案1】:

    Phone App 在接听/拨打电话之前无意中启用了麦克风,但它不会恢复之前的状态,因为麦克风的正常状态是启用的。

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

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

    【讨论】:

    • 不幸的是,设备没有 root 权限。另外,将麦克风静音是否是一种好方法,比如每 5 秒一次? AudioManager.setMicrophoneMute() 在我的设备上工作,但我需要确保没有其他应用可以取消麦克风静音
    • 不幸的是,您的实现存在限制,因为从 ANdroid 6 Marshmallow 开始,检查“AudioManager.setMicrophoneMute()”应该执行的位置:它检查语音呼叫当前是否处于活动状态并拒绝该方法在此状态下更改麦克风。语音通话和 VoIP 应用程序始终将 PhoneMode 设置为 IN_CALL/IN_COMMUNICATION,因此麦克风始终在那里工作。也许其他应用程序可以根据需要使用 MODE_IN_COMMUNICATION。所以你可以每隔 5 秒静音一次,但不能保证麦克风保持静音
    猜你喜欢
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 2021-06-27
    • 2012-07-31
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多