藍牙系統從上到下主要包括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