首页 > 代码库 > 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文件,提供上层服务和底层交互。这个目录里的代码更像一个桥梁承上启下的作用,承上:通过Binderframework/base/core/java/android/bluetooth蓝牙服务通信

启下:通过 JNIexternal/bluetooth/blueroid蓝牙协议通信。



framework/base/core/java/android/bluetooth

蓝牙各种协议的API提供给上层使用。我们平时使用的BluetoothAdapterBluetoothDeviceBluetoothSocket



external\bluetooth\bluedroid

官方蓝牙协议栈,相当于蓝牙HAL操作。供所有蓝牙的实际操作,开关蓝牙,HCIACLSCOL2CAPRFComm,蓝牙的所有Profile等。


.蓝牙整体结构图如下:

1.Applications是蓝牙相关的上层应用UI部分,这里我们主要分析 Settings APP下面有广蓝牙的部分。


2.Java Framework主要是蓝牙服务的API 接口,提供给Settings APP下蓝牙设置调用。


3.Bluetooth APPpackages/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 分析总结(一)