[摘要]: 本文主要论述基于android 6.0的蓝牙上层(Java层)通话机制;总结了蓝牙通话框架,并且给出了接听电话的详细的流程图;最后说明了apk的实现以及总结了蓝牙/android 相关的知识点。
1, 蓝牙框架
主要代码路径:
路径1: frameworks\base\core\java\android\bluetooth\
蓝牙相关接口,蓝牙各种功能的发起点。
路径2:packages\apps\Bluetooth\src\com\android\bluetooth\
独立的Bluetooth.apk,里面包含蓝牙相关的各种服务,是java层和C/C++层的桥梁。
路径3: packages\apps\Bluetooth\jni\
调用底层C/C++实现各种蓝牙功能,并且反馈给java层。
在路径2里面还有各种相互独立的java代码包,每一个包都包含一个协议,实现一个具体的功能:
btservice: 统一管理,控制其他服务。
a2dp: 和蓝牙耳机,音频有关,比如听歌等。
avrcp: 音频/视频通过连接的蓝牙控制,比如放歌时控制暂停等。
gatt:低功耗BLE有关,比如蓝牙按键。
hdp: 蓝牙医疗有关
hfp和hfpclient : 蓝牙通话有关,比如蓝牙通话的相关操作
hid: 蓝牙键盘键盘/鼠标
map: 同步蓝牙短信相关
opp: 蓝牙传输,比如传输文件等
pan: 个人局域网
pbap: 同步电话本,比如联系人/通话记录等
sap : 蓝牙通话,主要和SIM卡相关
sdp: 蓝牙服务发现/获取相关
这12个包分别实现了12中蓝牙功能,大多数以服务的形式存在,运行在Bluetooth.apk中。不仅如此,还具有以下特点:
1,每一个服务相互