框架
蓝牙如今许多人生活中不可或缺的一项技术,耳机、音箱、遥控器、手表、手环、电灯泡、手机、电脑、电视机,而Android也很常见,小到三岁孩童,老至八十老人都可能使用着它, 本系列文章将从源码角度详细剖析Android蓝牙框架,从现象看本质,看看点击一下蓝牙开关、点击一下连接就可以听到音乐背后的神秘面纱,看看app开发时调用enable
、connect
都是如何实现的。
本系列文章主要以Android14的源码为蓝本,Android13及以上版本将蓝牙相关的内容集中到packages/modules/Bluetooth目录下,而Android12及以下版本分散在各个目录,但总体的框架没有太大差异,代码获取方式:git clone https://android.googlesource.com/platform/packages/modules/Bluetooth -b android14-s2-release
,也可以从国内的一些源获取。整体框架如下图:
整体分三层,分别是apps、framework、native,向下还有bt driver等不再本系列问题讨论范围内,这里就不具体展示出来了,除了这三层还有一些中间件,如JNI、Binder。
- apps
这一层是整个框架的最上层,都是用户可以直接可以看到的APP,例如设置中的蓝牙页面、开发的蓝牙应用等等,这些app通过blueto