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

时间:2015-04-15 14:36:20

标签: 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块崩溃,但是当我使用unmuteMicrophone()方法时,它仍然不会影响麦克风状态。

1 个答案:

答案 0 :(得分:2)

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

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