setSpeakerphoneOn() не работает на 2.1, работает на 2.3

Мне нужно воспроизвести звук через наушник. Я использую AudioTrack для воспроизведения звука на устройстве. и режим аудио установлен как STREAM_VOICE_CALL. Также в моей деятельности громкая связь отключена:

AudioManager am;            
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
am.setSpeakerphoneOn(false);

Кажется, это прекрасно работает на 2.3 устройствах. Но на 2.1 звук по-прежнему воспроизводится через динамик.

Чтобы исправить это, я попытался использовать setMode() как:

am.setMode(AudioManager.MODE_IN_CALL);

При этом звук воспроизводился через динамик 2.1 и 2.3, но в большинстве случаев не воспроизводился вообще 2.3. Кроме того, я читал в некоторых местах, что setMode() не должен использоваться приложениями, поскольку это влияет на состояние телефона в масштабе всей системы. здесь: http://code.google.com/p/sipdroid/issues/detail?id=270

Любая помощь?

1 ответ

Ниже 2.3 Android был немного глючит с setSpeakerPhoneOn(), Что касается этого ответа, я думаю, вам нужно использовать оба метода API.

Что касается аудио 2.3, которое не воспроизводится вообще, проверьте настройки громкости во время разговора (что и будет использоваться). Попробуйте отследить состояние, в котором был телефон, перед использованием setMode() а также, возможно, установив его обратно в MODE_NORMAL после того, как аудио менеджер больше не используется.

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