Android 版本與 Bluetooth 版本之間的關係



http://www.ifeegoo.com/relationship-between-android-version-and-bluetooth-version.html


摘要:Android 版本與 Bluetooth 版本之間是否存在必然關係?答案是否定的。不同版本的 Android 系統是否有針對不同版本的 Bluetooth 模塊提供官方的 API 供開發者調用,這個纔是關鍵。

最近開始 Bluetooth 開發,一直糾結一個問題:

Android 版本與 Bluetooth 版本之間是否存在必然關係?例如:Android 4.3 版本的手機上的 Bluetooth 模塊一定是支持 BLE (Bluetooth Low Energy) 的嗎?

答案是否定的,比如說有一個設備廠商,在自己的 Android 4.3 系統的設備上移除了 Bluetooth 模塊,或者在自己的 Android 4.3 系統設備上的 Bluetooth 模塊仍然採用的是 Bluetooth 2.1 ,這種情況在理論上來說是有可能的。當然,正常情況下,設備廠商如果要在自己的 Android 4.3 系統設備上提供 Bluetooth 模塊的話,一定會考慮到自己的 Bluetooth 版本和當前設備的 Android 系統版本之間的關係,這是針對設備的普通使用者和開發者考慮的問題。當然,如果說設備廠商生產了一款 Android 1.6 系統的設備,在上面採用了 BLE 模塊,當然由於 Android 1.6 系統沒有對 BLE 操作的 API。如果說所有 Android 1.6 系統不支持的對 BLE 模塊的操作,都自己開發相應的 API,也是可以完成在 Android 1.6 系統的設備上對 BLE 操作的。這種情況,從理論上來說也是可行的,只不過一般不會有廠商這麼做。

針對我們這種非定製 Android 設備開發者來說,我們首要關心的是不同版本的 Android 系統是否有針對不同版本的 Bluetooth 提供官方的 API 供開發者調用。當然,針對不同的 Bluetooth 方案商,比如 Nordic (www.nordicsemi.com/),會有自己的特定的 API,當然這些 API 對於 Android 開發者來說,都是基於Android API基礎上實現的,這些就先另當別論了。

通過 Android 官網資料,我們可以看到從 Android 1.0 (API Level 1) – Android 4.4W (API Level 20) 中 Android 官方版本的更迭對 Bluetooth 支持的變化。


************************************************************************************************************
關於 Android 中的 Bluetooth 協議棧的說明:


    Android 4.2 版本系統之前,Google 一直使用的是 Linux 官方 Bluetooth 協議棧,即知名老牌開源項目 BlueZ。BlueZ 實際上是由高通公司在2001年5月基於 GPL 協議發佈的一個開源項目,該項目僅發佈一個月後就被 Linux 之父 Linux Torvalds 納入了 Linux 內核,並做爲 Linux 2.4.6 內核的官方 Bluetooth 協議棧。隨着 Android 設備的流行,BlueZ 也得到了極大的完善和擴展。例如 Android 4.1 版本系統中 BlueZ 的版本升級爲4.93,它支持 Bluetooth 核心規範 4.0,並實現了絕大部分的 Profile。
    BlueZ 現在正處於其巔峯時期,但好景不長。從Android 4.2 即 Jelly Bean 開始,Google 便在 Android 源碼中推出了它和博通公司一起開發的 BlueDroid 以替代 BlueZ。雖然因爲時間及成熟度的原因,大部分手機廠商在 Android 4.2 中仍繼續使用 BlueZ。但據筆者瞭解,BlueZ 的創始者,高通公司也將在基於其芯片的 Android 參考設計中去除 BlueZ,並僅支持BlueDroid。
BlueZ 的未來如何筆者姑且不論。不過,能讓高通改弦易轍,BlueDroid 自有其合理之處。相比 BlueZ,BlueDroid 最值得稱道的地方就是其框架結構變得更爲簡潔和清晰。另外,藉助 HAL(Hardware Abstraction Layer,硬件抽象層),BlueDroid 終於不再和 DBUS 有任何瓜葛。下圖所示爲 Android 4.2 中 BlueDroid 的框架結構圖:

android-4.2-bluedroid-structure


由上圖可以看出,Android 4.2 中 BlueDroid 框架包括以下幾個部分:
1.應用程序通過 android.bluetooth 包下的API來調用系統的 Bluetooth 功能。
2.應用層空間增加了一個名爲 Bluetooth 的 App。它作爲系統的 Bluetooth 核心進程而存在。其內部將通過 JNI 來調用 Bluetooth HAL 層以完成各種藍牙請求。
3.Bluetooth HAL 也屬於 Android 4.2 新增模塊,它由藍牙核心規範硬件抽象層和藍牙應用規範硬件抽象層組成。由於 HAL 層的隔離作用,上層代碼可輕鬆移植到不同芯片平臺。
4.作爲整個藍牙服務的核心,Bluetooth Stack 模塊則由 Bluetooth Application Layer(BTA)和Bluetooth Embedded System(BTE)兩大部分組成。BTA 實現了藍牙設備管理、狀態管理及一些應用規範。而 BTE 則通過 HCI 與廠商藍牙芯片交互以實現了藍牙協議棧的通用功能和相關協議。另外,BTE 還包括一個統一內核接口(GKI),藍牙芯片廠商可藉助 GKI 快速輕鬆得移植藍牙協議棧到其他操作系統或手機平臺上。
5.Vendor Extentions(廠商擴展):開發者可以添加自定義擴展以實現廠商特定的模塊和組件。


    除了 BlueDroid 外,在今年的 Google I/O 大會,谷歌公司還宣佈將於與蘋果、微軟和黑莓等公司共同支持 Bluetooth Smart Ready(BSR,藍牙智能就緒)和 Bluetooth Smart(BS,藍牙智能)技術。這項技術使藍牙設備或應用可以非常容易地連接全球成千上萬的藍牙設備,藍牙使用者的生活也因此變得更加簡單。BSR 和 BS 都是建立在藍牙核心規範4.0和 GATT 應用規範。即將發佈的 Android 4.3(MR2)支持 BSR 技術,使得 BS 的開發者可以輕易地將其設備和應用與 Android BSR 設備進行連接和發佈。藍牙使用者運用 BS 的智能應用配件(如健康監控或醫療設備)收集數據,再傳送到支持 BSR 設備(如智能手機或平板)上。
    另外,藍牙 SIG 也正在研發工具 Bluetooth Application Accelerator(藍牙應用加速器)。據可靠消息,該工具將隨 Android 4.3 發佈,並將幫助開發者在 Android 4.3 上快速開發藍牙應用,從而加快相關產品的研發時間。


總結
    本文對藍牙核心規範、藍牙應用規範以及 Android 4.2 中的藍牙協議棧 BlueDroid 進行了一些簡單介紹。從筆者瞭解的情況來看,BlueDroid 雖然對 BlueZ 大有取而代之的趨勢,但現在它對藍牙應用規範的支持還不夠完善。例如 BlueDroid 僅支持 AVRCP 1.0,而非最新的 AVRCP 1.5。所以,國內某些芯片或手機廠商若能及早完成 BlueZ 相關模塊到 BlueDroid 的移植工作,相信能幫助它們在競爭日趨白日化的移動世界中拔得先機。
    另外,作爲一種成熟、低功耗無線通信技術的先鋒,藍牙未來在可穿戴設備領域中也將扮演越來越重要的作用。那時,藍牙或許就會真正像“牙齒”一樣成爲各種設備中不可或缺的一部分了。

************************************************************************************************************
說明:以上兩行”*”號中間的內容來自 CSDN 作者 ID 爲 Innost 的博客文章:
http://blog.csdn.net/innost/article/details/9187199,感謝他給予的參考,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章