首页 > 代码库 > Android 4.2 Bluetooth 分析总结(一)
Android 4.2 Bluetooth 分析总结(一)
因为是新手,之前没有研究过蓝牙功能,也不知到Bluetooth 在android 其他版本上的情况,但是大概了解之后发现,Android4.2 之后的Bluetooth 模块和之前版本的android有很大的出入,具体表现在哪里我就不研究了,因此我是直接拿Android4.2 Bluetooth 来研究的,当然这也参考了网上很多前辈的文章:android -- 蓝牙 bluetooth (一) 入门等。在这里表示感谢!!!
一.蓝牙模块相关的代码 在Android 4.2上的分布如下:
settings下面有BluetoothUI部分代码。主要负责蓝牙的开/关和蓝牙设备查找等。
packages/apps/Bluetooth/
蓝牙的Bluetooth.apk文件,提供上层服务和底层交互。这个目录里的代码更像一个桥梁承上启下的作用,承上:通过Binder和framework/base/core/java/android/bluetooth蓝牙服务通信
启下:通过 JNI和external/bluetooth/blueroid蓝牙协议通信。
framework/base/core/java/android/bluetooth
蓝牙各种协议的API提供给上层使用。我们平时使用的BluetoothAdapter,BluetoothDevice,BluetoothSocket等
external\bluetooth\bluedroid
官方蓝牙协议栈,相当于蓝牙HAL操作。供所有蓝牙的实际操作,开关蓝牙,HCI,ACL,SCO,L2CAP,RFComm,蓝牙的所有Profile等。
二.蓝牙整体结构图如下:
1.Applications是蓝牙相关的上层应用UI部分,这里我们主要分析 Settings APP下面有广蓝牙的部分。
2.Java Framework主要是蓝牙服务的API 接口,提供给Settings APP下蓝牙设置调用。
3.Bluetooth APP是 packages/apps/Bluetooth/ 下面的代码,提供蓝牙的核心服务,主要是通过JNI 调用 Bluedroid 蓝牙协议栈。
4.Bluedroid 蓝牙协议栈,是external\bluetooth\bluedroid下面的代码,实现了具体蓝牙打开,关闭,查找等功能。
三.以蓝牙 打开 enable 为例简单说明下蓝牙工作的整个过程:
Settings UI enable() ----->> Framwork BluetoothManagerService enable()------>>> Bluetooth APP AdapterService enable()------>>>Bluedroid enableNative().
接下来详细分析整个蓝牙打开的过程,深入到真个代码体系当中,前提有完整的Android4.2代码。
Android 4.2 Bluetooth 分析总结(一)