標籤:
原文網址:http://blog.csdn.net/innost/article/details/9187199
Tieto公司某藍芽大牛寫得《程式員》投稿文章
Android 4.2藍芽介紹
藍芽一詞源於公元十世紀丹麥國王HaraldBlatand名字中的Blatand。Blatand的英文之意就是Blue tooth。這是因為這位讓丹麥人引以為傲的國王酷愛吃藍莓以至於牙齦都被染成藍色。由於Blatand統一了丹麥和挪威,所以,作為無線通訊技術的一種,藍芽技術之所以取名Bluetooth可謂志向遠大。不過,在以Android為代表的智能機出現以前,藍芽在早期智能機甚至功能機中一直扮演著“雞肋”的角色。那麼,隨著無線通訊技術的快速發展以及Android的普及,藍芽能給我們帶來哪些新的變化呢?
本文將從藍芽核心規範的發展曆史、最具應用前景的幾個藍芽Profile以及Android 4.2中藍芽實現情況等幾個方面向讀者介紹藍芽技術。
一 藍芽規範介紹
作為一種通用的無線通訊技術,規範自然是藍芽技術的核心。藍芽規範可分為兩個層次,1所示:
圖1 藍芽規範的階層
由圖1可知藍芽規範包括:
- Core Specification(核心規範),用於規定藍牙裝置必須實現的通用功能和協議層次。它由軟體和硬體模組組成,兩個模組之間的資訊和資料通過主機控制介面(HCI)的解釋才能進行傳遞。
- Profiles(藍芽應用規範),它從應用情境的角度為藍芽技術的使用制定了不同的規範。這也是和福士日常生活接觸最多的一部分。藍芽支援很多Profiles,下文將介紹幾種使用最廣泛的藍芽應用規範。
1.1 藍芽核心規範介紹
核心規範是藍芽協議家族的基礎,自藍芽技術聯盟(Bluetooth SIG,Special Interest Group)在1999年頒布藍芽核心規範1.0版本以來,到目前為止藍芽SIG一共發布了七個重要版本。每一個版本都促使藍芽技術朝著更快、更安全、更省電的方向發展。表1所示為藍芽核心規範[①]發展曆史。
表1 藍芽核心規範發展介紹
版本 |
規範發布日期 |
增強功能 |
0.7 |
1998年10月19日 |
Baseband、LMP |
0.8 |
1999年1月21日 |
HCI、L2CAP、RFCOMM |
0.9 |
1999年4月30日 |
OBEX與IrDA的互連性 |
1.0 Draft |
1999年7月5日 |
SDP、TCS |
1.0 A |
1999年7月26日 |
第一個正式版本 |
1.0 B |
2000年10月1日 |
安全性,廠商裝置之間串連相容性 |
1.1 |
2001年2月22日 |
IEEE 802.15.1 |
1.2 |
2003年11月5日 |
快速串連、自適應跳頻、錯誤偵測和流程式控制制、同步能力 |
2.0 + EDR |
2004年11月9日 |
EDR傳輸率提升至2-3Mbps |
2.1 + EDR |
2007年7月26日 |
擴充查詢響應、簡易安全配對、暫停與繼續加密、Sniff省電 |
3.0 + HS |
2009年4月21日 |
交替射頻技術、802.11協議適配層、電源管理、取消了UMB的應用 |
4.0 +BLE |
2010年6月30日 |
低功耗物理層和鏈路層、AES加密、Attribute Protocol(ATT)、Generic Attribute Profile(GATT)、Security Manager(SM) |
表1中,
- EDR:全稱為Enhanced Data Rate。通過提高多任務處理和多種藍牙裝置同時啟動並執行能力,EDR使得藍牙裝置的傳輸速度可達3Mbps。
- HS:全稱為High Speed。HS使得Bluetooth能利用WiFi作為傳輸方式進行資料轉送,其支援的傳輸速度最高可達24Mbps。其核心是在802.11的基礎上,通過整合802.11協議適配層,使得藍芽協議棧可以根據任務和裝置的不同,選擇正確的射頻。
- BLE:全稱為Bluetooth Low Energy。藍芽規範4.0最重要的一個特性就是低功耗。BLE使得藍牙裝置可通過一粒紐扣電池供電以維持續工作數年之久。很明顯,BLE使得藍牙裝置在鐘錶、遠端控制、醫學保健及運動感應器等市場具有極光明的應用情境。
雖然藍芽4.0規範3年就發布,但目前使用最廣泛的藍芽核心規範版本還是3.0。智能手機中只有Iphone 4S,Iphone5,三星GallaxyS3、S4、Note2等少數裝置支援藍芽4.0。不過,Google已經在Android 4.3中添加了對4.0的支援。很明顯,隨著Android的持續推進和眾多廠商的齊力支援,筆者估計在未來較短的一段時間內,藍芽核心規範4.0將得到迅速普及。表2是經典藍芽與低功耗藍芽的一些區別:
表2 經典藍芽與低功耗藍芽的區別
技術規範 |
經典藍芽(2.1 &3.0) |
低功耗藍芽(4.0) |
無線電頻率 |
2.4GHz |
2.4GHz |
距離 |
10米/100米 |
30米 |
資料速率 |
1-3Mbps |
1Mbps |
應用輸送量 |
0.7-2.1Mbps |
0.2Mbps |
發送資料的總時間 |
100ms |
<6ms |
耗電量 |
1 |
0.01至0.5 |
最大操作電流 |
<30mA |
<15mA(最高運行時為15 mA) |
主要用途 |
手機,遊戲機,耳機,立體聲音頻流,汽車和PC等 |
手機,遊戲機,PC,表,體育和健身,醫學保健,汽車,家用電子,自動化和工業等 |
那麼,藍芽核心規範4.0有什麼特別之處呢?藍芽核心規範4.0的模組2所示:
圖2 藍芽核心規範4.0的模組
由圖2可知,藍芽核心規範4.0的模組增加了以下幾個藍芽低功耗組件。
- GATT表示伺服器屬性和用戶端屬性,描述了屬性伺服器中使用的服務層次,特點和屬性。BLE裝置使用它作為藍芽低功耗應用規範的服務發現。
- ATT實現了屬性用戶端和伺服器之間的點對點通訊協定 (PPP)。ATT用戶端給ATT伺服器發送請命令。ATT伺服器向ATT用戶端發送回複和通知。
- SMP用於產生對等協議的加密金鑰和身份密鑰。SMP管理加密金鑰和身份密鑰的儲存,它通過產生和解析裝置的地址來識別藍牙裝置。
1.2 藍芽應用規範[②]
藍芽SIG根據不同的應用情境定義了不同的藍芽應用規範,截止到現在,發布了40個藍芽應用規範。本節介紹最常用的五個的藍芽應用規範。
1.2.1 Advanced Audio Distribution Profile
Advanced Audio Distribution Profile 簡稱為A2DP(高品質音頻分發規範)定義了如何將立體聲品質的音頻通過流媒體的方式從媒體源傳輸到接收器上。A2DP使用Asynchronous Connectionless Link(ACL,藍芽非同步傳輸)通道傳輸高品質音頻內容,它依賴於Generic Audio/Video Distribution Profile(GAVDP,通用音頻/視頻分發規範)。A2DP必須支援低複雜度及Sub-bandCodec(SBC,低頻寬編解碼),可選支援MPEG1,2音頻,MPEG2、4AAC。A2DP的應用情境4[1]所示:A2DP的應用情境3所示:
圖3 A2DP的應用情境
由圖3可知,A2DP有兩種應用情境分別是播放和錄音。
- 播放情境是具有藍芽功能的播放器通過A2DP向藍芽耳機或藍芽立體聲擴音器傳送高品質音頻。
- 錄音情境是具有藍芽功能的麥克風通過A2DP向藍芽錄音器傳送高品質音頻。
和A2DP相關的規範有Video Distribution Profile(VDP,視頻分發規範),Audio/Video Remote Control Profile(AVRCP,音頻/視頻運程式控制制規範)。
1.2.2 Object Push Profile
OPP(對象推送規範)定義了推送伺服器和用戶端之間基於Generic Object Exchange Profile(GOEP,通用對象交換規範)進行對象交換的規範。OPP的應用情境4所示:
圖4 OPP的應用情境
由圖4可知,OPP主要用於手機與手機或者手機與電腦之間通過藍芽進行檔案操作。可交換的檔案類型有電話本,備忘錄,議程表等文字檔,還有視頻,聲音,圖片,音樂等多媒體檔案。
Wi-Fi Direct(WiFi直連)[③]和藍芽OPP有相同的功能。WiFi直連是WiFi裝置之間不需要無線路由器,直接進行對象交換。它的優點是傳輸距離長、速度快,缺點是功耗高。
1.2.3 Hands-Free Profile
HFP(HFP,免提規範)定義了藍芽音頻網關裝置如何通過藍芽免提裝置撥打和電話中。HFP的應用情境5所示:
圖5 HFP的應用情境
由圖5可知,HFP包括兩個角色:
- Audio Gateway(AG,音頻網關)和Hands-Free Unit(HF,免提裝置)。AG是音頻輸入和輸出的裝置,典型的AG裝置是手機。HF是執行音頻網關的遠程音頻輸入輸出裝置。
- HFP常見的情境是汽車上的車載套件,當車載套件和耳機通過藍芽方式串連到手機時,通過無線藍芽耳機撥打和電話中。
和HFP相關的規範有Headset Profile(HSP,耳機規範),Phonebook Access Profile(PBAP,電話簿訪問規範。
1.2.4 Heart Rate Profile
HRP(心率規範)定位與和醫學/健康相關的應用情境中,它使得藍牙裝置能與心率感應器互動。相關情境6所示:
圖6 HRP的角色關係和應用情境
由圖6可知:
- 左圖是HRP定義的角色關係。HRP中有兩個角色:心率感應器和收集器。心率感應器是GATT伺服器,是測量心率的裝置,它包含心率服務和裝置資訊服務,心率服務匯出心率測量資料;收集器是GATT用戶端,是從心率感應器接收心率測量資料和其它資料的裝置。
- 右圖是HRP的應用情境。心率規範用於讓裝置獲得心率感應器的心率測量和其它資料。例如,護士或醫生可以用心率感應器測量病人的心率,並把心率資料傳到筆記本或手持功能上。
隨著人口老齡化,醫療設備和醫護人員資源不足,可以運用藍芽健康規範實現遠程醫學。筆者所在的Tieto公司在Android平台上運用心率規範開發了心率測量的原型程式,詳細介紹請看視頻http://www.youtube.com/watch?v=r_t-hstRgDs&feature=youtu.be。
和HRP相關的健康規範有Glucose Profile(GLP,血糖規範),Blood Pressure Profile(BLP,血壓規範BLP),Health Thermometer Profile(HTP,健康體溫計規範)。
1.2.5 Cycling Speed and Cadence Profile
CSCP(單車速度和步調規範)讓人們在騎單車鍛煉時跟蹤速度和節奏。CSCP也基於GATT的規範。單車速度和步調規範的角色關係和應用情境7所示:
圖7 CSCP的角色關係和應用情境
由圖7可知:
- 左圖是CSCP的角色關係。CSCP定義了兩個角色:單車速度和步調感應器和收集器。CSC感應器是GATT伺服器,向收集器報告車輪轉速資料或軸轉速資料。CSC感應器包含CSC服務和裝置資訊服務;收集器是GATT用戶端,從CSC感應器接收單車的速度和步調資料。
- 右圖是CSCP的應用情境。感應器測量被廣泛應用於運動和健身,通過感應器來監視和控制訓練強調,以及在多個訓練中衡量進展情況。單車速度感應器和單車踏頻感應器是使用者測量車輪速度或蹬踏節奏的裝置。任何裝置實現CSC規範可以與CSC感應器串連並接收資料。
和CSCP相關的規範有Running Speed and Cadence Profile(RSCS,跑步速度和步調規範)。
二 Android中的Bluetooth
Android 4.2之前,Google一直使用的是Linux官方藍芽協議棧,即知名老牌開源項目BlueZ。BlueZ實際上是由高通公司在2001年5月基於GPL協議發布的一個開源項目,該項目僅發布一個月後就被Linux之父Linux Torvalds納入了Linux核心,並做為Linux 2.4.6核心的官方藍芽協議棧。隨著Android裝置的流行,BlueZ也得到了極大的完善和擴充。例如Android 4.1中BlueZ的版本升級為4.93,它支援藍芽核心規範4.0,並實現了絕大部分的Profiles。
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有任何瓜葛。圖8所示為Android 4.2中BlueDroid的架構結構圖[④]:
圖8 Android 4.2BlueDroid架構結構圖
由圖8可知,Android4.2中BlueDroid架構套件括以下幾個部分:
- 應用程式通過android.bluetooth package下的API來調用系統的Bluetooth功能。
- 應用程式層空間增加了一個名為Bluetooth的App。它做為系統的bluetooth核心進程而存在。其內部將通過JNI來調用Bluetooth HAL層以完成各種藍芽請求。
- Bluetooth HAL也屬於Android 4.2新增模組,它由藍芽核心規範硬體抽象層和藍芽應用規範硬體抽象層組成。由於HAL層的隔離作用,上層代碼可輕鬆移植到不同晶片平台。
- 作為整個藍芽服務的核心,Bluetooth Stack模組則由Bluetooth Application Layer(縮寫為BTA)和Bluetooth Embedded System(縮寫為BTE)兩大部分組成。BTA實現了藍牙裝置管理、狀態管理及一些應用規範。而BTE則通過HCI與廠商藍芽晶片互動以實現了藍芽協議棧的通用功能和相關協議。另外,BTE還包括一個統一核心介面(GKI),藍芽晶片廠商可藉助GKI快速輕鬆得移植藍芽協議棧到其他動作系統或手機平台上。
- Vendor Extentions(廠商擴充):開發人員可以添加自訂擴充以實現廠商特定的模組和組件。
除了BlueDroid外,在今年的Google I/O大會,Google公司還宣布將於與蘋果、微軟和黑莓等公司共同支援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(藍芽DTBoost)。據可靠訊息,該工具將隨Android 4.3發布,並將協助開發人員在Android 4.3上快速開發藍芽應用,從而加快相關產品的研發時間。
三 總結
本文對藍芽核心規範、藍芽應用規範以及Android 4.2中的藍芽協議棧BlueDroid進行了一些簡單介紹。
從筆者瞭解的情況來看,BlueDroid雖然對BlueZ大有取而代之的趨勢,但現在它對藍芽應用規範的支援還不夠完善。例如BlueDroid僅支援AVRCP 1.0,而非最新的AVRCP 1.5。所以,國內某些晶片或手機廠商若能及早完成BlueZ相關模組到BlueDroid的移植工作,相信能協助它們在競爭日趨白日化的移動世界中拔得先機。
另外,作為一種成熟、低功耗無線通訊技術的先鋒,藍芽未來在穿戴式裝置領域中也將扮演越來越重要的作用。那時,藍芽或許就會真正像“牙齒”一樣成為各種裝置中不可或缺的一部分了。
[①]http://zh.wikipedia.org/wiki/Bluetooth
[②]詳情可參考http://developer.bluetooth.org/TechnologyOverview/Pages/Profiles.aspx
[③]關於WFD,讀者可參考http://blog.csdn.net/innost/article/details/8474683
[④]http://source.android.com/devices/bluetooth.html
【轉】Android 4.2藍芽介紹