нужна идея по отправке/получению звука через A2DP между устройством Android и не-андроида

Мне нужно иметь возможность отправлять и получать аудио через Bluetooth, и кажется, что A2DP - это то, что делает это

Используя приведенный здесь код, мне удалось обнаружить мой телефон и подключиться к удаленному устройству Bluetooth, а затем установить соединение A2DP, которое отправило весь аудиовыход устройства android на удаленный через bluetooth

Ранее я мог делать такую двухстороннюю передачу данных с одним и тем же удаленным устройством Bluetooth через RFCOMM (телефон Android должен был быть инициатором связи, хотя я не мог сделать это через удаленное устройство, хотя я знаю, что это возможно). Как только соединение RFCOMM было установлено, устройство Android могло отправлять данные на удаленное устройство, а также получать от него данные

Теперь мне нужно что-то подобное, но для аудио (желательно использовать A2DP, но я открыт для использования чего бы то ни было, до тех пор, пока он выполняет свою работу). В то время как snooping вокруг SO у меня есть намеки на то, что получение аудиоданных на телефоне (по крайней мере, некорректный нормальный, rooting для меня не вариант) через A2DP невозможно (см., Например, здесь). Но я также видел наушники, которые позволяют делать телефонные звонки полностью через Bluetooth (ну, на самом деле, на самом деле, я предполагаю, что это должен быть bluetooth). Например, для входящего вызова вы можете просто нажать кнопку на наушнике bluetooth, затем вы можете говорить, а также слушать другую сторону. Если телефон не может использоваться как аудиоприемник, как это делают такие наушники?

Мне нужны некоторые идеи о том, как мне нужно писать приложение Android для отправки, а также получать аудиоданные через bluetooth (для простоты можно считать, что он похож на образец программы Bluechat, но включает звук вместо текста). Возможно ли вообще (через java)? Возможно ли это только через NDK? Как делают устройства на рынке? Это другой профиль, чем A2DP?

PS: Мои тестовые устройства - Samsung Galaxy 2 (телефон) с Gingerbread и Asus Nexus 7 (планшет) с KitKat. Кстати, удаленное устройство bluetooth (это плата разработки) поставляется с образцом проекта, который должен превратить плату в аудио-источник A2DP. если я запустил этот примерный проект на плате, используя встроенные настройки Bluetooth и телефона, я могу сортировать пару с удаленной доской, но устройства Android не получают никакого звука.

3
14 янв. '15 в 3:59
источник поделиться
2 ответов

Существует два разных профиля A2DP source A2DP sink. Профиль A2DP source поддерживается Android, позволяя вам передавать музыку с вашего устройства на раковину, как громкоговоритель bluetooth. Насколько мне известно, профиль A2DP sink не включен, поэтому вы не можете передавать музыку на свой мобильный телефон и выступать в качестве динамика. Я знаю это только из-за того, что когда-то меня искал, так что все могло измениться.

Можно включить профиль A2DP sink, отредактировав /etc/bluetooth/audio.conf и перезагрузив телефон. К сожалению, это имеет побочный эффект отключения профиля A2DP source и, следовательно, не может использоваться в широко распространенном приложении. Другой недостаток заключается в том, что для работы с этим профилем не так много программного пакета Java, поэтому вам нужно будет немного поработать над тем, чтобы добиться успеха.

Чтобы ответить на вопрос о том, почему гарнитура может подключаться к Android, это связано с тем, что гарнитуры используют другой профиль, называемый Headset profile (HSP), обычно используемый гарнитурами, или Handsfree profile (HFP) обычно используемый в автомобилях. Оба профиля имеют две стороны: клиентскую сторону и сторону шлюза (мобильный телефон). Качество звука обоих этих профилей считается качеством голоса. 8 или 16 кГц частоты дискретизации и дрянной кодек. Существует также множество протоколов для ответа на вызовы и т.д.... Я не уверен, что вы даже получите аудио для передачи без активного подключения к телефонной сети.

3
14 янв. '15 в 5:02
источник

Для поддержки A2DP Sink - Да. Возможно. Я сделал это в Android JB. Android-устройство в качестве приемника для профиля A2DP. Пожалуйста, прочитайте мой ответ.

1
06 марта '15 в 8:50
источник

Посмотрите другие вопросы по меткам или Задайте вопрос