此文描述的是 AOSP11(Android R) 版本的蓝牙内容。
1. AOSP11 Bluetooth Relative Repos
Repos | Documents | Installed Product |
---|---|---|
packages/apps/Settings/ | src/com/android/settings/bluetooth/ | Settings.apk |
src/com/android/settings/development/bluetooth/ | Settings.apk | |
frameworks/base/ | packages/SettingsLib/src/com/android/settingslib/bluetooth/ | ?? |
core/java/android/bluetooth/ | framework.jar | |
services/core/java/com/android/server/ | services.jar | |
packages/apps/Bluetooth/ | * (exclude jni/) | Bluetooth.apk |
jni/ | libbluetooth_jni.so | |
system/bt/ | * | libbluetooth.so |
hardware/interfaces/ | bluetooth/ | ?? |
- packages/apps/Settings/ 包含蓝牙的设置和开发者选项;
- frameworks/base/ 包含蓝牙的 API封装(供设置等系统应用使用)、标准API、system_server中运行的常驻蓝牙服务;
- packages/apps/Bluetooth/ 包含蓝牙的核心服务和各种profile服务等;
- system/bt/ 包含蓝牙的协议栈实现、apex、binder接口定义(AIDL);
- hardware/interfaces/ 包含蓝牙的 HAL 层接口定义(AIDL/HIDL)。
2. AOSP11 Bluetooth Architecture
- 紫色框是进程;
- 黑色框是模块(Android 上可独立修改安装的包)。
- 由于蓝牙进程(com.android.bluetooth)仅在蓝牙开启时运行,因此,在蓝牙进程未启动时,在系统中需要有一个常驻模块接收并处理 enable bluetooth 操作,该模块即为 system_server 进程中的 BluetoothManagerService。
2.1 AOSP11 Bluetooth Stack Architecture
注意:以上名称主要来自AOSP的目录名称,不确保具备通用性。
- BTIF:Bluetooth Interface,表示 JNI 与 BTA 之间的接口;
- BTA:Bluetooth Application,表示蓝牙应用(如 profile或 与profile相关)的实现;
- STACK:Bluetooth Stack,表示蓝牙核心协议栈的 Protocol 的实现(可能包含部分 Profile 的实现);
- BTU:Bluetooth Upper,表示 HCI 的上层,是 HCI 与 Stack 之间的接口,主要是对 HCI 操作的封装;
- HCI:Host Controller Interface,表示蓝牙 Core Spec 描述的 HCI 在AOSP中的实现。
3. AOSP11 Bluetooth Code Description
3.1 system/bt/
4 AOSP11 Bluetooth Initialization Arch
Bluetooth initialization - enable in Settings & System_server process
Bluetooth initialization - Bluetooth process Initialization - Framework(Java)
Bluetooth initialization - Bluetooth process Initialization - Native(Cpp)
Bluetooth initialization - enable in Bluetooth process