2010-04-18 13 views
9

Próbuję ustawić głośnomówiący w wywołanie programowo za pomocą audiomanager.setSpeakerphoneOn(true) w usłudze, ale wydaje się, że nie działa i nie wiem dlaczego. Czy powinienem zrobić coś innego?Zestaw głośnomówiący z Androidem programowo

Dzięki

+0

Podobny padło pytanie i odpowiedział [tutaj] [1] [1]: http://stackoverflow.com/questions/8617381/turn-on-speakerphone-whenever-an-outgoing- call-is-made/21328490 # 21328490 –

Odpowiedz

13

sprawdzić, czy plik manifestu ma uprawnienia potrzebne do wykonania tej operacji.

Myślę, że to uprawnienie trzeba MODIFY_AUDIO_SETTINGS

+0

To działa! To było dość łatwe! Dzięki – Matroska

4

w Android 4.1 i więcej podczas wykonywania połączenia telefon automatycznie wyłączyć głośnik. Więc co trzeba zrobić, to dodać zestaw głośnomówiący w odbiorniku, który nasłuchuje na połączenia są wykonane, gdy stan jest „OFFHOOK”, a nawet umieścić 0,5 sekundy opóźnione, aby włączyć głośnik tak:

final Handler mHandler = new Handler(); 
mHandler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    audioManager.setMode(AudioManager.MODE_IN_CALL); 
    audioManager.setSpeakerphoneOn(true); 
    MainActivity.shouldTurnSpeakerOn = false; 
    MainActivity.shouldTurnSpeakerOff = true; 
    Log.d("incoming_call","speaker_on");      
    } 
}, 500); 

Pamiętaj, aby dodać to do detektora stanu Telefon. I, aby uruchomić telefon głośnomówiący, gdy stan jest bezczynny (wymagany w przypadku wcześniejszych wersji).

Powodzenia.

+0

Nie wiem, dlaczego, ale to opóźnienie 500 ms jest wymagane. Dzięki! – Ishaan