蓝牙,wifi,3g 作为移动端平台最多见的dongle,蓝牙现在利用愈来愈广泛,特别是现在流行智能终端,多点互控,wifi,3g等资源消耗大,红外又有距离和障碍物的限制,所以说蓝牙通讯在未来其它的不说,单在智能TV上利用的情形将会愈来愈广泛.这里只是初步理解学习,以后将会1层1层从kernel直到application
撰写不容易,转载需注明出处:http://blog.csdn.net/jscese/article/details/41283879
先看1张层次图:
可以看到大体分成了3个部份,
最上层就是 application framework,供利用程序使用的API,
java层的api类的 源码路径:framework/base/core/java/android/bluetooth
和packages/apps/Bluetooth/src/com/android/bluetooth下的bluetooth services (以Bluetooth.apk情势编译进系统)
第2层由上面的packages/apps/Bluetooth下的service调用到的本地的JNI开始,调用到hardware中的定义(hardware/libhardware/include/hardware/bluetooth.h
hardware/libhardware/include/hardware/bt_*.h
),
bluetooth.default.so 的实现放在external/bluetooth/bluedroid
这里面就是bluetooth的核心协议栈
可以看到分为了几部份,后面介绍分别的代表的作用
其中还有1个抽象的接口协议层hci,用于与不同厂家的Vendor 连通,Vendor HCI中是需要实现必须的接口的
最下面 内核层,是linux的通用驱动了,这里的都是linux 对与蓝牙操作触及到的驱动模块
之前的android版本我不熟,但是网上的说android4.2相对照之前的,蓝牙改动很大,把原来的BlueZ替换成了Bluedroid(也就是external中的),把原来放在framework中的bluetooth service jni 改放到了package中app中,
就我目前调试来看 之前的/system/bluetooth也没有用到.
这是来自google官网 http://source.android.com/devices/bluetooth.html 里面的1张图:
这就是从application到vendor,其中Bluetooth Stack中模块则由Bluetooth Application Layer(缩写为BTA)和Bluetooth Embedded System(缩写为BTE)两大部份组成。
BTA 实现了蓝牙装备管理、状态管理及1些利用规范,与Android framework 交互.
BTE 则通过HCI与厂商蓝牙芯片交互以实现了蓝牙协议栈的通用功能和相干协议。另外,BTE还包括1个统1内核接口(GKI),蓝牙芯片厂商可借助GKI快速轻松得移植蓝牙协议栈.
后续再来分析每一个层次的模块运作与上下交互~
上一篇 Android与设计模式――装饰者(Decorator)模式
下一篇 libstdc++.so.6: cannot open shared object file: No such file or directory