2013-05-08 3 views
0

Если я установил режим AudioManager в MODE_IN_COMMUNICATION и установил поток медиаплеера в STREAM_VOICE_CALL, я могу точно настроить звук на громкую связь или динамик внутренней телефонной трубки. И если он подключен к внутреннему динамику, а проводная гарнитура подключена к сети, она автоматически направляется на нее. Тем не менее, я не могу найти способ маршрутизации звука на гарнитуру A2DP (без изменения аудиорежима на MODE_NORMAL или поток на STREAM_MUSIC). Моя проблема заключается в том, что использование MODE_NORMAL и STREAM_VOICE_CALL вызывает проблемы на некоторых устройствах, а использование STREAM_MUSIC - проблема, если в фоновом режиме уже есть музыка, тогда мое приложение «смешивается» с этой фоновой музыкой.В Android, есть ли способ перенаправить звук в A2DP с помощью «MODE_IN_COMMUNICATION»?

Итак, я надеялся, что есть способ заставить звук к гарнитуре A2DP использовать комбинации MODE_IN_COMMUNICATION и STREAM_VOICE_CALL. Это возможно?

ответ

0

Возможно, он работает на некоторых устройствах, но если вам нужна совместимость по большинству устройств, тогда ответ будет «Нет».

Когда состояние телефона равно MODE_IN_CALL или MODE_IN_COMMUNICATION, все потоки, как правило, следуют стратегии маршрутизации PHONE. Это означает, что маршрутизация в A2DP запрещена с:

1) A2DP не поддерживает двусторонний голос в любом случае.

2) Если ваш BT-аксессуар поддерживает профиль Hands-free, он будет использовать ссылку SCO для голосового звука, а канал ACL, используемый для A2DP, должен быть закрыт, чтобы избежать взаимных помех между ними.

+0

Фактически, STREAM_VOICE_CALL и MODE_NORMAL работают практически на всех устройствах. Я понимаю, что вы говорите, но есть некоторые устройства (и ПЗУ), которые не будут маршрутизировать никакой звук вообще при использовании STREAM_VOICE_CALL (без громкоговорителя или чего-то еще). Но любое устройство, которое позволяет использовать STREAM_VOICE_CALL для динамиков, также будет передавать его через A2DP. – user496854

+0

_ «на самом деле, STREAM_VOICE_CALL и MODE_NORMAL работают практически на всех устройствах» _ Конечно, но мой ответ был за ваш вопрос относительно «MODE_IN_COMMUNICATION». _ «любое устройство, которое позволяет использовать STREAM_VOICE_CALL для динамика, также будет передавать его по A2DP» _ Не во время разговора (то есть когда состояние телефона «MODE_IN_CALL»/'MODE_IN_COMMUNICATION'). – Michael

+0

Вот почему я не упомянул «MODE_IN_CALL» в вопросе. Использование MODE_NORMAL/STREAM_VOICE_CALL позволяет воспроизводить звук как по внутренней, так и по громкой связи, и если подключена проводная, USB-гарнитура или A2DP-гарнитура, аудио автоматически направляется к ним. Вот почему эта комбинация настолько полезна. Но некоторые устройства просто не позволяют захватить STREAM_VOICE_CALL, поэтому я думал, что MODE_IN_COMMUNICATION будет работать одинаково (но похоже, что это не так) – user496854