isMicrophoneMute() 和 setMicrophoneMute() 使 Android 应用程序崩溃
isMicrophoneMute() and setMicrophoneMute() make Android application crash
我正在尝试使用 AudioManager 工具将 Android phone 上的微型 phone 静音。所以我想知道 microphone 是否被静音,使用 isMicrophoneMute()
方法,但这会使我的应用程序崩溃。
setMicrophoneMute()
方法也是如此。
我已经为我的应用程序授予 MODIFY_PHONE_STATES
、MODIFY_PHONE_STATE
和 MODIFY_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()
方法时它仍然不会影响微 phone 状态。
您需要初始化mAudioManager,使用
mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
我正在尝试使用 AudioManager 工具将 Android phone 上的微型 phone 静音。所以我想知道 microphone 是否被静音,使用 isMicrophoneMute()
方法,但这会使我的应用程序崩溃。
setMicrophoneMute()
方法也是如此。
我已经为我的应用程序授予 MODIFY_PHONE_STATES
、MODIFY_PHONE_STATE
和 MODIFY_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()
方法时它仍然不会影响微 phone 状态。
您需要初始化mAudioManager,使用
mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);