Android включил громкую связь программно

Я пытаюсь включить громкую связь во время разговора программно, используя audiomanager.setSpeakerphoneOn(true) в службе, но, кажется, она не работает, и я не знаю почему. Должен ли я сделать что-то еще?

Спасибо

2 ответа

Решение

Проверьте, есть ли у вашего файла манифеста разрешения, необходимые для выполнения этой операции.

Я думаю, что это разрешение вам нужно MODIFY_AUDIO_SETTINGS

В андроиде 4.1 и более при звонке телефон автоматически отключает громкую связь. Итак, что вам нужно сделать, это добавить громкую связь в приемнике, который прослушивает сделанный вызов, когда состояние "offHook", и даже поставить 0,5 секунды с задержкой для включения динамика таким образом:

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);

Не забудьте добавить это в прослушиватель состояния телефона. И запустить громкую связь, когда состояние IDLE (необходимо для более ранних версий).

Удачи.

Другие вопросы по тегам