Android 4.2藍芽介紹

阿拉神農發表於2013-06-27

Tieto公司某藍芽大牛寫得《程式設計師》投稿文章

Android 4.2藍芽介紹

藍芽一詞源於公元十世紀丹麥國王HaraldBlatand名字中的BlatandBlatand的英文之意就是Blue tooth。這是因為這位讓丹麥人引以為傲的國王酷愛吃藍莓以至於牙齦都被染成藍色。由於Blatand統一了丹麥和挪威,所以,作為無線通訊技術的一種,藍芽技術之所以取名Bluetooth可謂志向遠大。不過,在以Android為代表的智慧機出現以前,藍芽在早期智慧機甚至功能機中一直扮演著雞肋的角色。那麼,隨著無線通訊技術的快速發展以及Android的普及,藍芽能給我們帶來哪些新的變化呢?

本文將從藍芽核心規範的發展歷史、最具應用前景的幾個藍芽Profile以及Android 4.2中藍芽實現情況等幾個方面向讀者介紹藍芽技術。

  藍芽規範介紹

作為一種通用的無線通訊技術,規範自然是藍芽技術的核心。藍芽規範可分為兩個層次,如圖1所示:

藍芽規範的層次結構

由圖1可知藍芽規範包括:

  • Core Specification(核心規範),用於規定藍芽裝置必須實現的通用功能和協議層次。它由軟體和硬體模組組成,兩個模組之間的資訊和資料通過主機控制介面(HCI)的解釋才能進行傳遞。
  • Profiles(藍芽應用規範),它從應用場景的角度為藍芽技術的使用制定了不同的規範。這也是和大眾日常生活接觸最多的一部分。藍芽支援很多Profiles,下文將介紹幾種使用最廣泛的藍芽應用規範。

 

1.1  藍芽核心規範介紹

核心規範是藍芽協議家族的基礎,自藍芽技術聯盟(Bluetooth SIGSpecial Interest Group)在1999年頒佈藍芽核心規範1.0版本以來,到目前為止藍芽SIG一共釋出了七個重要版本。每一個版本都促使藍芽技術朝著更快、更安全、更省電的方向發展。表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 4SIphone5,三星GallaxyS3S4Note2等少數裝置支援藍芽4.0。不過,Google已經在Android 4.3中新增了對4.0的支援。很明顯,隨著Android的持續推進和眾多廠商的齊力支援,筆者估計在未來較短的一段時間內,藍芽核心規範4.0將得到迅速普及。表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所示:

藍芽核心規範4.0的模組

由圖2可知,藍芽核心規範4.0的模組增加了以下幾個藍芽低功耗元件。

  • GATT表示伺服器屬性和客戶端屬性,描述了屬性伺服器中使用的服務層次,特點和屬性。BLE裝置使用它作為藍芽低功耗應用規範的服務發現。
  • ATT實現了屬性客戶端和伺服器之間的點對點協議。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 LinkACL,藍芽非同步傳輸)通道傳輸高質量音訊內容,它依賴於Generic Audio/Video Distribution ProfileGAVDP,通用音訊/視訊分發規範)。A2DP必須支援低複雜度及Sub-bandCodecSBC,低頻寬編解碼),可選支援MPEG12音訊,MPEG24AACA2DP的應用場景如圖4[1]所示:A2DP的應用場景如圖3所示:

3  A2DP的應用場景

由圖3可知,A2DP有兩種應用場景分別是播放和錄音。

  • 播放場景是具有藍芽功能的播放器通過A2DP向藍芽耳機或藍芽立體聲揚聲器傳送高質量音訊。
  • 錄音場景是具有藍芽功能的麥克風通過A2DP向藍芽錄音器傳送高質量音訊。

A2DP相關的規範有Video Distribution ProfileVDP,視訊分發規範),Audio/Video Remote Control ProfileAVRCP,音訊/視訊運程控制規範)。

1.2.2  Object Push Profile

OPP(物件推送規範)定義了推送伺服器和客戶端之間基於Generic Object Exchange ProfileGOEP,通用物件交換規範)進行物件交換的規範。OPP的應用場景如圖4所示:

4  OPP的應用場景

由圖4可知,OPP主要用於手機與手機或者手機與電腦之間通過藍芽進行檔案操作。可交換的檔案型別有電話本,備忘錄,日程表等文字檔案,還有視訊,聲音,圖片,音樂等多媒體檔案。

Wi-Fi DirectWiFi直連)[③]和藍芽OPP有相同的功能。WiFi直連是WiFi裝置之間不需要無線路由器,直接進行物件交換。它的優點是傳輸距離長、速度快,缺點是功耗高。

1.2.3  Hands-Free Profile

HFPHFP,擴音規範)定義了藍芽音訊閘道器裝置如何通過藍芽擴音裝置撥打和接聽電話。HFP的應用場景如圖5所示:

5  HFP的應用場景

由圖5可知,HFP包括兩個角色:

  • Audio Gateway(AG,音訊閘道器)和Hands-Free Unit(HF,擴音裝置)。AG是音訊輸入和輸出的裝置,典型的AG裝置是手機。HF是執行音訊閘道器的遠端音訊輸入輸出裝置。
  • HFP常見的場景是汽車上的車載套件,當車載套件和耳機通過藍芽方式連線到手機時,通過無線藍芽耳機撥打和接聽電話。

HFP相關的規範有Headset ProfileHSP,耳機規範),Phonebook Access ProfilePBAP,電話簿訪問規範。

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 ProfileGLP,血糖規範),Blood Pressure ProfileBLP,血壓規範BLP),Health Thermometer ProfileHTP,健康體溫計規範)。

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 ProfileRSCS,跑步速度和步調規範

  Android中的Bluetooth

Android 4.2之前,Google一直使用的是Linux官方藍芽協議棧,即知名老牌開源專案BlueZBlueZ實際上是由高通公司在20015月基於GPL協議釋出的一個開源專案,該專案僅釋出一個月後就被Linux之父Linux Torvalds納入了Linux核心,並做為Linux 2.4.6核心的官方藍芽協議棧。隨著Android裝置的流行,BlueZ也得到了極大的完善和擴充套件。例如Android 4.1BlueZ的版本升級為4.93,它支援藍芽核心規範4.0,並實現了絕大部分的Profiles

BlueZ現在正處於其巔峰時期,但好景不長。從Android 4.2Jelly Bean開始,Google便在Android原始碼中推出了它和博通公司一起開發的BlueDroid以替代BlueZ。雖然因為時間及成熟度的原因,大部分手機廠商在Android 4.2中仍繼續使用BlueZ。但據筆者瞭解,BlueZ的創始者,高通公司也將在基於其晶片的Android參考設計中去除BlueZ,並僅支援BlueDroid

BlueZ的未來如何筆者姑且不論。不過,能讓高通改弦易轍,BlueDroid自有其合理之處。相比BlueZBlueDroid最值得稱道的地方就是其框架結構變得更為簡潔和清晰。另外,藉助HALHardware Abstraction Layer,硬體抽象層),BlueDroid終於不再和dbus有任何瓜葛。圖8所示為Android 4.2BlueDroid的框架結構圖[④]

8  Android 4.2BlueDroid框架結構圖

由圖8可知,Android4.2BlueDroid框架包括以下幾個部分:

  • 應用程式通過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大會,谷歌公司還宣佈將於與蘋果、微軟和黑莓等公司共同支援Bluetooth Smart ReadyBSR,藍芽智慧就緒)和Bluetooth SmartBS,藍芽智慧)技術。這項技術使藍芽裝置或應用可以非常容易地連線全球成千上萬的藍芽裝置,藍芽使用者的生活也因此變得更加簡單。BSRBS都是建立在藍芽核心規範4.0GATT應用規範。即將釋出的Android 4.3MR2)支援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的移植工作,相信能幫助它們在競爭日趨白日化的移動世界中拔得先機。

另外,作為一種成熟、低功耗無線通訊技術的先鋒,藍芽未來在可穿戴裝置領域中也將扮演越來越重要的作用。那時,藍芽或許就會真正像“牙齒”一樣成為各種裝置中不可或缺的一部分了。


[①]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

 

相關文章