藍牙,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