Bluetooth-стек BlueZ против Bluedroid

У BlueZ много документации и все такое. И из того же, я понял, что BlueZ поддерживает поддержку приемника A2DP. И в то же время устройство Android можно заставить действовать как приемник A2DP, изменив файл audio.conf внутри него.

Я также узнал, что начиная с Android 4.2 стек BlueZ был заменен стеком Broadcom Bluedroid. Я много искал о стеке Bluedroid. Но мне не удалось найти много подробностей о том же.

Надеюсь, кто-то может помочь мне со следующими сомнениями.

1). Есть ли у Bluedroid поддержка приемника A2DP?

2). Будет ли доступен файл audio.conf для устройств со стеком bluedroid?

3). Я собираюсь написать поддержку приемника A2DP для устройства Android, напрямую вызывая API стека BlueZ. Но мой последний вопрос: можно ли использовать то же самое со стеком Bluedroid? Hope Bluedroid — это просто расширение BlueZ.

Пожалуйста помоги.


person Nidhin Joseph    schedule 05.12.2013    source источник


Ответы (4)


Bluedroid — это стек, предоставленный Broadcom, и теперь он имеет открытый исходный код для Android. Bluedroid не имеет никакого отношения к bluez, у него мало преимуществ перед bluez (я отличаюсь от этого).

[1]. На данный момент Bluedroid не поддерживает приемник a2dp, согласно доступному коду исходный код поддерживает только источник a2dp доступный

[2]. Файл Audio.conf предназначен для стека bluez, он не является частью bluedroid.

[3]. Прямой вызов Bluez API — я думаю, вы будете использовать вызовы dbus, но bluedroid не поддерживает вызовы методов dbus, в нем реализован механизм обратного вызова, поэтому он не будет работать, bluedroid не является расширением bluez.

person ashish    schedule 06.12.2013
comment
Это был один из лучших ответов, которые у меня когда-либо были. Большое спасибо. Разрешил все мои недоумения :) - person Nidhin Joseph; 06.12.2013
comment
Я хочу знать еще одну вещь. Начиная с Android 4.3, весь стек BlueZ заменяется стеком Bluedroid? или оба интегрированы таким образом, чтобы поддерживать обратную совместимость. Я не знаю, имеет ли вопрос смысл в каком-либо смысле. Но я просто хочу подтвердить это, чтобы продолжить свои исследования в том же духе :) - person Nidhin Joseph; 06.12.2013
comment
Я думаю, что если какой-то поставщик хочет по-прежнему использовать bluez, он может сделать это с изменениями конфигурации в сборке Android, но мне это тоже не ясно. - person ashish; 06.12.2013
comment
@ashish, есть ли у вас идеи о поддержке одновременных нескольких потоков a2dp в любом из вышеперечисленных стеков? - person JRC; 09.01.2014
comment
@JRC: согласно спецификации A2DP, профиль не поддерживает синхронизированное распределение «точка-многоточка». но я считаю, что вы можете иметь индивидуальную реализацию в bluez - чтобы проверить, спросите в bluez IRC и сообщите всем нам :) - person ashish; 09.01.2014
comment
@ashish, в JB bluez заменен на bluedroid, поэтому, насколько я понимаю, нам нужно настроить реализацию bluedroid для поддержки двух одновременных a2dp, а также платформу Android, чтобы пользователь мог это сделать, не так ли? мы можем изменить стек bluedroid? Я синхронизирован? - person JRC; 10.01.2014
comment
@JRC: не могу комментировать bluedroid, поскольку его реализация отличается от bluez, можно задать отдельный вопрос, так что ... может быть, кто-то еще знает ответ - person ashish; 10.01.2014

Роль A2DP Sink теперь поддерживается в Android Lollipop (5.0). Они изменили исходный код Bluedroid, чтобы он поддерживал то же самое. Чтобы полностью поддерживать его, вам необходимо изменить аудио HAL (audio.h), AudioPolicyManagerBase.cpp и audio_policy.conf, а также Audio Manager, A2DPStateMachine и т. д.

person theangrylama    schedule 30.11.2014
comment
Не могли бы вы указать какое-либо руководство о том, как полностью поддерживать роль приемника A2DP? - person tchelidze; 20.01.2017

Как сказал пользователь 987500, приемник A2DP поддерживается в Android L, внесите лишь незначительные изменения, ваше устройство может быть изменено с A2DP src на приемник. Но убедитесь, что для одного устройства может поддерживаться только одна роль, которую можно настроить из файла xml.

person Boatman_Yang    schedule 05.08.2015
comment
внесите лишь незначительные изменения, не могли бы вы уточнить это? - person tchelidze; 30.01.2017

В дополнение к приведенным выше ответам, начиная с Android L, введена поддержка приемника, но часть кода для потоковой передачи аудио все еще не завершена. Однако я нашел это список изменений, в котором завершена реализация приемника a2dp и можно воспроизвести через устройство-приемник, как указано в сообщении фиксации списка изменений:

Bluetooth-приемник A2DP

Это изменение реализует функцию приемника A2DP. Если устройство Android является приемником, оно может получать музыку с телефона через BT. Эту функцию можно применять в автомобильном мультимедийном комплекте, телеприставке и семейном HiFi. Установите BLUETOOTH_A2DP_SINK := true в BoardConfig.mk, чтобы включить функцию A2DP Sink в bluedroid.

Вам также нужны изменения ниже в структуре, чтобы направить музыку на динамик. https://android-review.googlesource.com/#/c/97832/ https://android-review.googlesource.com/#/c/97853/ https://android-review.googlesource.com/#/c/97833/ https://android-review.googlesource.com/#/c/98130/ https://android-review.googlesource.com/#/c/98131/

Это изменение не распространяется на декодер SBC. Вы можете получить декодер SBC с github.com/tieto/sbc-decoder.

Всего наилучшего!!!

person aksonlyaks    schedule 21.10.2016
comment
Идя дальше, проблема в том, что этот патч применяется к andoroid 4.4.*. Изменения в патче уже (вероятно, частично) применены в Android L - person tchelidze; 30.01.2017