android - isMicrophoneMute() 和 setMicrophoneMute() 使 Android 应用程序崩溃

标签 android microphone android-audiomanager

我正在尝试使用 AudioManager 工具将 Android 手机上的麦克风静音。所以我想知道麦克风是否静音,使用 isMicrophoneMute() 方法,但这会使我的应用程序崩溃。 setMicrophoneMute() 方法也是如此。

我已将 MODIFY_PHONE_STATESMODIFY_PHONE_STATEMODIFY_AUDIO_SETTINGS 权限授予我的应用程序。

这是我的代码:

private static AudioManager mAudioManager;


public static boolean unmuteMicrophone(final Context c) {
    if (c == null) {
        Log.v(TAG, "switchMicrophone: Context is null");
        return false;
    }
    ContentResolver cr = c.getContentResolver();
    if (cr == null) {
        Log.d(TAG, "switchMicrophone: ContentResolver is null, " + c);
        return false;
    }
    try {
        Log.v(TAG, "Trying to unmute microphone");
        mAudioManager.setMicrophoneMute(false);
        Log.v(TAG, "Microphone unmuted");
    }
    catch (Exception e) {
        Log.e(TAG, "Microphone can't be unmuted. Error : " + e);
    }
    return !mAudioManager.isMicrophoneMute(); //return the state of the microphone

}

这不会与 try/catch block 一起崩溃,但是当我使用 unmuteMicrophone() 方法时它仍然不会影响麦克风状态。

最佳答案

你需要初始化你的mAudioManager,使用

mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

关于android - isMicrophoneMute() 和 setMicrophoneMute() 使 Android 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653171/

相关文章:

android - GridView 在按下后退按钮时被清除(当键盘可见时)

Android:振幅值到分贝值?

android - 通过 Text To Speech 说话时暂停电话铃声,然后继续

android - 通过 AudioManager 访问音频设置会导致其他应用程序的音量降低?

notifications - 设置音频属性音量

android - 有什么方法可以区分主屏幕上的 Android Activity onResume 吗?

具有共享元素的 Android fragment 转换

java - 从麦克风读取数据并检测 DTMF 音调的代码

android - 如何在android上直接从麦克风到扬声器播放声音?

android - 将RelativeLayout一分为二(图片和文字)