0

Мне нужно воспроизвести звук через динамик. Я использую AudioTrack для воспроизведения звука на устройстве. и аудиорежим устанавливается как STREAM_VOICE_CALL. Кроме того, в моей деятельности, спикерфон выключен:setSpeakerphoneOn() не работает на 2.1, работает на 2.3

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

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

ответ

0

Ниже 2.3, Android был немного ошибкой с setSpeakerPhoneOn(). Согласно this answer, я думаю, вам нужно использовать оба метода API.

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

+0

Я установил его обратно в MODE_NORMAL. все еще проблема. Я предполагаю, что мне придется жить с тем, что приложение 2.3+ или багги на 2.1. setmode() вообще не рекомендуется для таких приложений (проверьте ссылку в моем вопросе edit) – Alabhya

+0

Поскольку методы маршрутизации устарели, я не думаю, что есть другое решение, если вы не используете их специально для 2.2-. Это может быть ошибка с телефоном, который вы используете, например, как неполный аудио-драйвер или что-то в этом роде. –

 Смежные вопросы

  • Нет связанных вопросов^_^