首页 > 代码库 > Android——4.2 蓝牙 BlueTooth 初探入门 (一)

Android——4.2 蓝牙 BlueTooth 初探入门 (一)

      蓝牙,wifi,3g 作为移动端平台最常见的dongle,蓝牙现在应用越来越广泛,特别是现在流行智能终端,多点互控,wifi,3g等资源消耗大,红外又有距离和障碍物的限制,所以说蓝牙通信在未来其它的不说,单在智能TV上应用的情景将会越来越广泛.这里只是初步理解学习,之后将会一层一层从kernel直到application


                                        撰写不易,转载需注明出处:http://blog.csdn.net/jscese/article/details/41283879


结构层次:

先看一张层次图:



可以看到大体分成了三个部分,

java:

最上层就是 application framework,供应用程序使用的API,

java层的api类的 源码路径:framework/base/core/java/android/bluetooth 

以及packages/apps/Bluetooth/src/com/android/bluetooth下的bluetooth services (以Bluetooth.apk形式编译进系统)


native space:

第二层由上面的packages/apps/Bluetooth下的service调用到的本地的JNI开始,调用到hardware中的定义(hardware/libhardware/include/hardware/bluetooth.hhardware/libhardware/include/hardware/bt_*.h),

bluetooth.default.so 的实现放在external/bluetooth/bluedroid

这里面就是bluetooth的核心协议栈

可以看到分为了几部分,后面介绍分别的代表的作用

其中还有一个抽象的接口协议层hci,用于与不同厂家的Vendor 连通,Vendor HCI中是需要实现必需的接口的


kernel:

最下面 内核层,是linux的通用驱动了,这里的都是linux 对与蓝牙操作涉及到的驱动模块




之前的android版本我不熟,但是网上的说android4.2相对比之前的,蓝牙改动很大,把原来的BlueZ替换成了Bluedroid(也就是external中的),把原来放在framework中的bluetooth service jni 改放到了package中app中,

就我目前调试来看 之前的/system/bluetooth也没有用到.




模块图:

 这是来自google官网 http://source.android.com/devices/bluetooth.html 里面的一张图:






这就是从application到vendor,其中Bluetooth Stack中模块则由Bluetooth Application Layer(缩写为BTA)和Bluetooth Embedded System(缩写为BTE)两大部分组成。

BTA 实现了蓝牙设备管理、状态管理及一些应用规范,与Android framework 交互.

BTE 则通过HCI与厂商蓝牙芯片交互以实现了蓝牙协议栈的通用功能和相关协议。另外,BTE还包括一个统一内核接口(GKI),蓝牙芯片厂商可借助GKI快速轻松得移植蓝牙协议栈.


后续再来分析每个层次的模块运作与上下交互~











Android——4.2 蓝牙 BlueTooth 初探入门 (一)