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