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
после того, как аудио менеджер больше не используется.