蓝牙系统从上到下主要包括Jva框架中的Bluetooth类,Android适配库,BlueZ库,驱动程序和协议
(1)BlueZ库
libbluetooth.so,libbluedroid.so等库提供对用户空间蓝牙的支持,包含主机控制协议HCI以及其他内核实现协议的接口,实现了所有蓝牙应用模式Profile
(2)蓝牙的JNI部分
framework/base/core/jni/
(3)java框架层
frameworks/base/core/java/android/bluetooth
frameworks/base/service/....
(4)Bluetooth的适配库
实现对蓝牙设备的管理
蓝牙模块
初始化蓝牙
通过hciattach进行初始化蓝牙设备
蓝牙服务
init.rc配置
低功耗蓝牙协议栈详解
从android4.2版本开始,从BlueZ换成BlueDroid,4.3版本开始提供了蓝牙4.0BLE,讲解BLE基础知识
基础
API详解
(1)本地蓝牙适配器设备
framework/base/core/java/android/bluetooth/BluetoothAdapter.java
发现其他蓝牙设备,查询匹配的设备集
使用一个已知蓝牙地址初始化蓝牙设备BluetoothDevice
创建一个能够监听其他设备通信的类BluetoothSocket
(2)请求远程蓝牙设备
framework/base/core/java/android/bluetooth/BluetoothDevice.java
请求获取远程蓝牙设备的连接
查询获取远程蓝牙设备的名称,地址,类和连接状态
(3)实现客户端的低功耗蓝牙规范
Android中的BlueDroid
Android系统BlueDroid的架构
Bluetooth Embedded System:实现BT(蓝牙)的核心功能
Bluetooth Application Layer:用于与Android Framework交互
Applicaiont Framework层分析
实现源码:framework/base/core/java/android/bluetooth/
实现BT service和各种profile
BluetoothA2dp.java:connect会调用System Service层A2dpService.java
Bluetooth System Service层
实现源码:packages/app/Bluetooth
A2dpService.java:connect会通过JNI调用到HAL层
JNI层
实现源码:packages/app/bluetooth/jni
com_android_bluetooth_a2dp.cpp:connectA2dpNative
HAL硬件抽象层
定义Bluetooth APIs和BT process调用的标准接口
BT HAL的头文件:hardware/libhardware/include/hardware/bluetooth.h bt_*.h