BlueZ vs Bluedroid蓝牙堆栈

时间:2013-12-05 18:00:38

标签: android bluetooth android-bluetooth bluez a2dp

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的扩展。

请帮忙。

4 个答案:

答案 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。

一切顺利!!!