Android включил громкую связь программно - PullRequest
12 голосов
/ 18 апреля 2010

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

Спасибо

Ответы [ 2 ]

17 голосов
/ 18 апреля 2010

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

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

4 голосов
/ 17 августа 2014

В Android 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 (необходимо для более ранних версий).

Удачи.

...