2015-04-15 6 views
1

Я пытаюсь отключить микрофон на телефоне Android, используя инструменты AudioManager. Поэтому я хочу знать, отключен ли микрофон или нет, используя метод isMicrophoneMute(), но это приводит к сбою моего приложения. То же самое для метода setMicrophoneMute().isMicrophoneMute() и setMicrophoneMute() делают сбои приложений для Android

Я дал 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/поймать, но он по-прежнему не влияет на состояние микрофона, когда я использую метод unmuteMicrophone().

+1

Я не вижу вас инициализации экземпляра AudioManager в любом месте. –

+0

Поделитесь своим временем сбоя logcat –

ответ

2

Вы должны инициализировать mAudioManager, используйте

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

Спасибо большое, я чувствую себя настолько глупо .... Спасибо! – Adrien