BlueZ有很多文件和所有文件。同样,我了解BlueZ支持A2DP接收器支持。同时,通过修改内部的audio.conf文件,可以使android设备充当A2DP接收器。
我也知道从android 4.2开始,BlueZ堆栈被Broadcom的Bluedroid堆栈取代。我搜索了很多关于Bluedroid堆栈的信息。但我无法找到相同的细节。
希望有人可以帮助我解决以下问题。
1)。 Bluedroid是否有A2DP接收器支持?
2)。 audio.conf文件是否可用于具有bluedroid堆栈的设备?
3)。我将通过直接调用BlueZ堆栈的API来为Android设备编写A2DP接收器支持。但我最后的问题是Bluedroid堆栈是否也可以使用相同的?希望Bluedroid只是BlueZ的扩展。
请帮忙。
答案 0 :(得分:13)
Bluedroid是Broadcom提供的一个堆栈,现在是android中的opensource。 Bluedroid在任何方面都与bluez无关,它与bluez相比几乎没有优势(我与此不同)。
[1]。截至目前,Bluedroid没有a2dp接收器支持,根据可用代码source code,只有a2dp源支持可用
[2]。 Audio.conf文件用于bluez堆栈,它不是bluedroid的一部分
[3]。直接调用Bluez API--我想你会使用dbus调用但是bluedroid不支持dbus方法调用,它有一个实现的回调机制,所以它不起作用,bluedroid不是bluez的扩展。
答案 1 :(得分:3)
Android Lollipop(5.0)现在支持A2DP Sink角色。他们修改了Bluedroid源代码以支持相同的功能。要完全支持它,您需要修改音频HAL(audio.h),AudioPolicyManagerBase.cpp和audio_policy.conf以及音频管理器,A2DPStateMachine等。
答案 2 :(得分:2)
正如user987500所说,android L支持A2DP接收器,只做了一些小修改,你的设备可以从A2DP src改为sink。 但请确保一个设备只能支持一个角色,可以从xml文件配置。
答案 3 :(得分:0)
添加上述答案,自Android L以来,引入了支持,但仍未完成音频流部分代码。但是,我找到了this更改列表,其中a2dp接收器实现已完成,并且可以通过接收设备播放媒体,如更改列表的提交消息中所述:
蓝牙A2DP接收器
此更改实现了A2DP接收器功能。如果Android设备是 一个接收器角色,它可以通过BT从手机接收音乐。这个功能可以 适用于多媒体车载套件,机顶盒和家庭HiFi。组 BLUETOOTH_A2DP_SINK:=在BoardConfig.mk中为true以启用A2DP接收器 在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。
一切顺利!!!