Я использую следующий код в BroadcastReceiver (прослушиватель состояния телефона), чтобы включить громкую связь:
final Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
}
}, 500);
Это происходит, когда новый исходящий вызов инициируется через мое приложение. Когда вызов отключен, я выключу громкоговоритель:
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(false);
Это все, кажется, хорошо работает... в первый раз. Позже, мои звуковые потоки телефона, похоже, запутались в беспорядке. Последующие вызовы странно молчат, даже звонки, сделанные из-за пределов моего кода приложения (где приведенные выше настройки не запускаются). Я могу получить звук звонка, казалось бы, случайно, но я не уверен, что заставляет его возвращаться.
Любые идеи о том, что я могу делать неправильно? Есть ли ошибка Android, о которой я не знаю? Как я могу избежать отключения звука для последующих вызовов?
EDIT: Я тестирую Galaxy S4.