在Android4.2中实现bluetooth A2dp Sink(一)——移植Android5.0蓝牙协议栈

    一直以来,Android对于蓝牙的支持都很混乱,简直可以说是一坨shit。各个版本的协议栈都不一样,最早用的是bluez,进入4.x时代之后,换成了谷歌自己的bluedroid。换就换吧,至少等做完了再用吧,结果4.2、4.3、4.4的bluedroid全都不一样。这就对我等非专业蓝牙开发人员开发蓝牙制造了巨大的麻烦。

    好了,吐槽到此为止,该说正事了。因为公司在做智能家居项目,需要在Android上实现蓝牙A2dp Sink的profile,这样我们的设备就能当蓝牙音箱来用了。我们是用的平台是全至A20,蓝牙模块是博通的一款bt+wifi的集成模块,sdk的版本是Android4.2。据我们了解,Android4.x的官方sdk中蓝牙A2dp只实现了source,也就是只能作为播放音乐的源,将音频数据传出去。博通自己有支持蓝牙A2dp Sink的协议栈,但是只支持Android4.4的。Realtek在Android4.2的协议栈上实现了A2dp Sink,但是受制于我们已经生产出去的版本都是使用的博通的模块,realtek这条路只能死心了。正当我们五路可走的时候,好消息来了,Android5.0发布了,而且“据说”是已经实现了A2dp Sink。好吧,那就移植吧。

    我会将整个的移植分为如下几个部分进行描述:

    1、Android中蓝牙音频系统基础知识;

    2、移植蓝牙协议栈;

    3、实现蓝牙音频播放;

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。