Tieto公司某藍(lán)牙大牛寫給《程序員》投稿文章
Android 4.2藍(lán)牙介紹
藍(lán)牙一詞源于公元十世紀(jì)丹麥國(guó)王HaraldBlatand名字中的Blatand。Blatand的英文之意就是Blue tooth。這是因?yàn)檫@位讓丹麥人引以為傲的國(guó)王酷愛吃藍(lán)莓以至于牙齦都被染成藍(lán)色。由于Blatand統(tǒng)一了丹麥和挪威,所以,作為無(wú)線通信技術(shù)的一種,藍(lán)牙技術(shù)之所以取名Bluetooth可謂志向遠(yuǎn)大。不過(guò),在以Android為代表的智能機(jī)出現(xiàn)以前,藍(lán)牙在早期智能機(jī)甚至功能機(jī)中一直扮演著“雞肋”的角色。那么,隨著無(wú)線通信技術(shù)的快速發(fā)展以及Android的普及,藍(lán)牙能給我們帶來(lái)哪些新的變化呢?
本文將從藍(lán)牙核心規(guī)范的發(fā)展歷史、最具應(yīng)用前景的幾個(gè)藍(lán)牙Profile以及Android 4.2中藍(lán)牙實(shí)現(xiàn)情況等幾個(gè)方面向讀者介紹藍(lán)牙技術(shù)。
一 藍(lán)牙規(guī)范介紹
作為一種通用的無(wú)線通信技術(shù),規(guī)范自然是藍(lán)牙技術(shù)的核心。藍(lán)牙規(guī)范可分為兩個(gè)層次,如圖1所示:
由圖1可知藍(lán)牙規(guī)范包括:
Core Specification(核心規(guī)范),用于規(guī)定藍(lán)牙設(shè)備必須實(shí)現(xiàn)的通用功能和協(xié)議層次。它由軟件和硬件模塊組成,兩個(gè)模塊之間的信息和數(shù)據(jù)通過(guò)主機(jī)控制接口(HCI)的解釋才能進(jìn)行傳遞。
Profiles(藍(lán)牙應(yīng)用規(guī)范),它從應(yīng)用場(chǎng)景的角度為藍(lán)牙技術(shù)的使用制定了不同的規(guī)范。這也是和大眾日常生活接觸最多的一部分。藍(lán)牙支持很多Profiles,下文將介紹幾種使用最廣泛的藍(lán)牙應(yīng)用規(guī)范。
1.1 藍(lán)牙核心規(guī)范介紹
核心規(guī)范是藍(lán)牙協(xié)議家族的基礎(chǔ),自藍(lán)牙技術(shù)聯(lián)盟(Bluetooth SIG,Special Interest Group)在1999年頒布藍(lán)牙核心規(guī)范1.0版本以來(lái),到目前為止藍(lán)牙SIG一共發(fā)布了七個(gè)重要版本。每一個(gè)版本都促使藍(lán)牙技術(shù)朝著更快、更安全、更省電的方向發(fā)展。表1所示為藍(lán)牙核心規(guī)]發(fā)展歷史。
藍(lán)牙核心規(guī)范發(fā)展介紹
版本 |
規(guī)范發(fā)布日期 |
增強(qiáng)功能 |
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日 |
安全性,廠商設(shè)備之間連接兼容性 |
1.1 |
2001年2月22日 |
IEEE 802.15.1 |
1.2 |
2003年11月5日 |
快速連接、自適應(yīng)跳頻、錯(cuò)誤檢測(cè)和流程控制、同步能力 |
2.0 + EDR |
2004年11月9日 |
EDR傳輸率提升至2-3Mbps |
2.1 + EDR |
2007年7月26日 |
擴(kuò)展查詢響應(yīng)、簡(jiǎn)易安全配對(duì)、暫停與繼續(xù)加密、Sniff省電 |
3.0 + HS |
2009年4月21日 |
交替射頻技術(shù)、802.11協(xié)議適配層、電源管理、取消了UMB的應(yīng)用 |
4.0 +BLE |
2010年6月30日 |
低功耗物理層和鏈路層、AES加密、Attribute Protocol(ATT)、Generic Attribute Profile(GATT)、Security Manager(SM) |
表1中,
EDR:全稱為Enhanced Data Rate。通過(guò)提高多任務(wù)處理和多種藍(lán)牙設(shè)備同時(shí)運(yùn)行的能力,EDR使得藍(lán)牙設(shè)備的傳輸速度可達(dá)3Mbps。
HS: 全稱為High Speed。HS使得Bluetooth能利用WiFi作為傳輸方式進(jìn)行數(shù)據(jù)傳輸,其支持的傳輸速度最高可達(dá)24Mbps。其核心是在802.11的基礎(chǔ) 上,通過(guò)集成802.11協(xié)議適配層,使得藍(lán)牙協(xié)議??梢愿鶕?jù)任務(wù)和設(shè)備的不同,選擇正確的射頻。
BLE:全稱為Bluetooth Low Energy。藍(lán)牙規(guī)范4.0最重要的一個(gè)特性就是低功耗。BLE使得藍(lán)牙設(shè)備可通過(guò)一粒紐扣電池供電以維持續(xù)工作數(shù)年之久。很明顯,BLE使得藍(lán)牙設(shè)備在鐘表、遠(yuǎn)程控制、醫(yī)療保健及運(yùn)動(dòng)感應(yīng)器等市場(chǎng)具有極光明的應(yīng)用場(chǎng)景。
雖然藍(lán)牙4.0規(guī)范3年就發(fā)布,但目前使用最廣泛的藍(lán)牙核心規(guī)范版本還是3.0。智能手機(jī)中只有Iphone 4S,Iphone5,三星GallaxyS3、S4、Note2等少數(shù)設(shè)備支持藍(lán)牙4.0。不過(guò),Google已經(jīng)在Android 4.3中添加了對(duì)4.0的支持。很明顯,隨著Android的持續(xù)推進(jìn)和眾多廠商的齊力支持,筆者估計(jì)在未來(lái)較短的一段時(shí)間內(nèi),藍(lán)牙核心規(guī)范4.0將得到迅速普及。表2是經(jīng)典藍(lán)牙與低功耗藍(lán)牙的一些區(qū)別:
經(jīng)典藍(lán)牙與低功耗藍(lán)牙的區(qū)別
技術(shù)規(guī)范 |
經(jīng)典藍(lán)牙(2.1 &3.0) |
低功耗藍(lán)牙(4.0) |
無(wú)線電頻率 |
2.4GHz |
2.4GHz |
距離 |
10米/100米 |
30米 |
數(shù)據(jù)速率 |
1-3Mbps |
1Mbps |
應(yīng)用吞吐量 |
0.7-2.1Mbps |
0.2Mbps |
發(fā)送數(shù)據(jù)的總時(shí)間 |
100ms |
<6ms |
耗電量 |
1 |
0.01至0.5 |
最大操作電流 |
<30mA |
<15mA(最高運(yùn)行時(shí)為15 mA) |
主要用途 |
手機(jī),游戲機(jī),PC,表,體育和健身,醫(yī)療保健,汽車,家用電子,自動(dòng)化和工業(yè)等 |
那么,藍(lán)牙核心規(guī)范4.0有什么特別之處呢?藍(lán)牙核心規(guī)范4.0的模塊如圖2所示:
由圖2可知,藍(lán)牙核心規(guī)范4.0的模塊增加了以下幾個(gè)藍(lán)牙低功耗組件。
GATT表示服務(wù)器屬性和客戶端屬性,描述了屬性服務(wù)器中使用的服務(wù)層次,特點(diǎn)和屬性。BLE設(shè)備使用它作為藍(lán)牙低功耗應(yīng)用規(guī)范的服務(wù)發(fā)現(xiàn)。
ATT實(shí)現(xiàn)了屬性客戶端和服務(wù)器之間的點(diǎn)對(duì)點(diǎn)協(xié)議。ATT客戶端給ATT服務(wù)器發(fā)送請(qǐng)命令。ATT服務(wù)器向ATT客戶端發(fā)送回復(fù)和通知。
SMP用于生成對(duì)等協(xié)議的加密密鑰和身份密鑰。SMP管理加密密鑰和身份密鑰的存儲(chǔ),它通過(guò)生成和解析設(shè)備的地址來(lái)識(shí)別藍(lán)牙設(shè)備。
1.2 藍(lán)牙應(yīng)用規(guī)范[②]
藍(lán)牙SIG根據(jù)不同的應(yīng)用場(chǎng)景定義了不同的藍(lán)牙應(yīng)用規(guī)范,截止到現(xiàn)在,發(fā)布了40個(gè)藍(lán)牙應(yīng)用規(guī)范。本節(jié)介紹最常用的五個(gè)的藍(lán)牙應(yīng)用規(guī)范。
1.2.1 Advanced Audio Distribution Profile
Advanced Audio Distribution Profile 簡(jiǎn)稱為A2DP(高質(zhì)量音頻分發(fā)規(guī)范)定義了如何將立體聲質(zhì)量的音頻通過(guò)流媒體的方式從媒體源傳輸?shù)浇邮掌魃稀2DP使用Asynchronous Connectionless Link(ACL,藍(lán)牙異步傳輸)信道傳輸高質(zhì)量音頻內(nèi)容,它依賴于Generic Audio/Video Distribution Profile(GAVDP,通用音頻/視頻分發(fā)規(guī)范)。A2DP必須支持低復(fù)雜度及Sub-bandCodec(SBC,低帶寬編解碼),可選支持MPEG1,2音頻,MPEG2、4AAC。A2DP的應(yīng)用場(chǎng)景如圖4[1]所示:A2DP的應(yīng)用場(chǎng)景
由圖3可知,A2DP有兩種應(yīng)用場(chǎng)景分別是播放和錄音。
播放場(chǎng)景是具有藍(lán)牙功能的播放器通過(guò)A2DP向藍(lán)牙耳機(jī)或藍(lán)牙立體聲揚(yáng)聲器傳送高質(zhì)量音頻。
錄音場(chǎng)景是具有藍(lán)牙功能的麥克風(fēng)通過(guò)A2DP向藍(lán)牙錄音器傳送高質(zhì)量音頻。
和A2DP相關(guān)的規(guī)范有Video Distribution Profile(VDP,視頻分發(fā)規(guī)范),Audio/Video Remote Control Profile(AVRCP,音頻/視頻運(yùn)程控制規(guī)范)。
1.2.2 Object Push Profile
OPP(對(duì)象推送規(guī)范)定義了推送服務(wù)器和客戶端之間基于Generic Object Exchange Profile(GOEP,通用對(duì)象交換規(guī)范)進(jìn)行對(duì)象交換的規(guī)范。OPP的應(yīng)用場(chǎng)景如圖4所示:
由圖4可知,OPP主要用于手機(jī)與手機(jī)或者手機(jī)與電腦之間通過(guò)藍(lán)牙進(jìn)行文件操作??山粨Q的文件類型有電話本,備忘錄,日程表等文本文件,還有視頻,聲音,圖片,音樂等多媒體文件。
Wi-Fi Direct(WiFi直連)[③]和藍(lán)牙OPP有相同的功能。WiFi直連是WiFi設(shè)備之間不需要無(wú)線路由器,直接進(jìn)行對(duì)象交換。它的優(yōu)點(diǎn)是傳輸距離長(zhǎng)、速度快,缺點(diǎn)是功耗高。
1.2.3 Hands-Free Profile
HFP(HFP,免提規(guī)范)定義了藍(lán)牙音頻網(wǎng)關(guān)設(shè)備如何通過(guò)藍(lán)牙免提設(shè)備撥打和接聽電話。HFP的應(yīng)用場(chǎng)景如圖5所示:
由圖5可知,HFP包括兩個(gè)角色:
Audio Gateway(AG,音頻網(wǎng)關(guān))和Hands-Free Unit(HF,免提設(shè)備)。AG是音頻輸入和輸出的設(shè)備,典型的AG設(shè)備是手機(jī)。HF是執(zhí)行音頻網(wǎng)關(guān)的遠(yuǎn)程音頻輸入輸出設(shè)備。
HFP常見的場(chǎng)景是汽車上的車載套件,當(dāng)車載套件和耳機(jī)通過(guò)藍(lán)牙方式連接到手機(jī)時(shí),通過(guò)無(wú)線藍(lán)牙耳機(jī)撥打和接聽電話。
和HFP相關(guān)的規(guī)范有Headset Profile(HSP,耳機(jī)規(guī)范),Phonebook Access Profile(PBAP,電話簿訪問(wèn)規(guī)范。
1.2.4 Heart Rate Profile
HRP(心率規(guī)范)定位與和醫(yī)療/健康相關(guān)的應(yīng)用場(chǎng)景中,它使得藍(lán)牙設(shè)備能與心率傳感器交互。相關(guān)場(chǎng)景如圖6所示:
由圖6可知:
左圖是HRP定義的角色關(guān)系。HRP中有兩個(gè)角色:心率感應(yīng)器和收集器。心率感應(yīng)器是GATT服務(wù)器,是測(cè)量心率的設(shè)備,它包含心率服務(wù)和設(shè)備信息服務(wù),心率服務(wù)導(dǎo)出心率測(cè)量數(shù)據(jù);收集器是GATT客戶端,是從心率感應(yīng)器接收心率測(cè)量數(shù)據(jù)和其它數(shù)據(jù)的設(shè)備。
右圖是HRP的應(yīng)用場(chǎng)景。心率規(guī)范用于讓設(shè)備獲得心率傳感器的心率測(cè)量和其它數(shù)據(jù)。例如,護(hù)士或醫(yī)生可以用心率傳感器測(cè)量病人的心率,并把心率數(shù)據(jù)傳到筆記本或手持設(shè)備上。
隨著人口老齡化,醫(yī)療設(shè)備和醫(yī)護(hù)人員資源不足,可以運(yùn)用藍(lán)牙健康規(guī)范實(shí)現(xiàn)遠(yuǎn)程醫(yī)療。筆者所在的Tieto公司在Android平臺(tái)上運(yùn)用心率規(guī)范開發(fā)了心率測(cè)量的原型程序,詳細(xì)介紹請(qǐng)看視頻http://www.youtube.com/watch?v=r_t-hstRgDs&feature=youtu.be。
和HRP相關(guān)的健康規(guī)范有Glucose Profile(GLP,血糖規(guī)范),Blood Pressure Profile(BLP,血壓規(guī)范BLP),Health Thermometer Profile(HTP,健康體溫計(jì)規(guī)范)。
1.2.5 Cycling Speed and Cadence Profile
CSCP(自行車速度和步調(diào)規(guī)范)讓人們?cè)隍T自行車鍛煉時(shí)跟蹤速度和節(jié)奏。CSCP也基于GATT的規(guī)范。自行車速度和步調(diào)規(guī)范的角色關(guān)系和應(yīng)用場(chǎng)景如圖7所示:
左 圖是CSCP的角色關(guān)系。CSCP定義了兩個(gè)角色:自行車速度和步調(diào)感應(yīng)器和收集器。CSC感應(yīng)器是GATT服務(wù)器,向收集器報(bào)告車輪轉(zhuǎn)速數(shù)據(jù)或軸轉(zhuǎn)速數(shù) 據(jù)。CSC感應(yīng)器包含CSC服務(wù)和設(shè)備信息服務(wù);收集器是GATT客戶端,從CSC感應(yīng)器接收自行車的速度和步調(diào)數(shù)據(jù)。
右圖是CSCP的應(yīng)用場(chǎng)景。傳感器測(cè)量被廣泛應(yīng)用于運(yùn)動(dòng)和健身,通過(guò)傳感器來(lái)監(jiān)視和控制訓(xùn)練強(qiáng)調(diào),以及在多個(gè)訓(xùn)練中衡量進(jìn)展情況。自行車速度傳感器和自行車踏頻傳感器是用戶測(cè)量車輪速度或蹬踏節(jié)奏的設(shè)備。任何設(shè)備實(shí)現(xiàn)CSC規(guī)范可以與CSC傳感器連接并接收數(shù)據(jù)。
和CSCP相關(guān)的規(guī)范有Running Speed and Cadence Profile(RSCS,跑步速度和步調(diào)規(guī)范)。
二 Android中的Bluetooth
Android 4.2之前,Google一直使用的是Linux官方藍(lán)牙協(xié)議棧,即知名老牌開源項(xiàng)目BlueZ。BlueZ實(shí)際上是由高通公司在2001年5月基于GPL協(xié)議發(fā)布的一個(gè)開源項(xiàng)目,該項(xiàng)目?jī)H發(fā)布一個(gè)月后就被Linux之父Linux Torvalds納入了Linux內(nèi)核,并做為L(zhǎng)inux 2.4.6內(nèi)核的官方藍(lán)牙協(xié)議棧。隨著Android設(shè)備的流行,BlueZ也得到了極大的完善和擴(kuò)展。例如Android 4.1中BlueZ的版本升級(jí)為4.93,它支持藍(lán)牙核心規(guī)范4.0,并實(shí)現(xiàn)了絕大部分的Profiles。
BlueZ現(xiàn)在正處于其巔峰時(shí)期,但好景不長(zhǎng)。從Android 4.2即Jelly Bean開始,Google便在Android源碼中推出了它和博通公司一起開發(fā)的BlueDroid以替代BlueZ。雖然因?yàn)闀r(shí)間及成熟度的原因,大部分手機(jī)廠商在Android 4.2中仍繼續(xù)使用BlueZ。但據(jù)筆者了解,BlueZ的創(chuàng)始者,高通公司也將在基于其芯片的Android參考設(shè)計(jì)中去除BlueZ,并僅支持BlueDroid。
BlueZ的未來(lái)如何筆者姑且不論。不過(guò),能讓高通改弦易轍,BlueDroid自有其合理之處。相比BlueZ,BlueDroid最值得稱道的地方就是其框架結(jié)構(gòu)變得更為簡(jiǎn)潔和清晰。另外,借助HAL(Hardware Abstraction Layer,硬件抽象層),BlueDroid終于不再和dbus有任何瓜葛。圖8所示為Android 4.2中BlueDroid的框架結(jié)構(gòu)圖[④]:
由圖8可知,Android4.2中BlueDroid框架包括以下幾個(gè)部分:
應(yīng)用程序通過(guò)android.bluetooth package下的API來(lái)調(diào)用系統(tǒng)的Bluetooth功能。
應(yīng)用層空間增加了一個(gè)名為Bluetooth的App。它做為系統(tǒng)的bluetooth核心進(jìn)程而存在。其內(nèi)部將通過(guò)JNI來(lái)調(diào)用Bluetooth HAL層以完成各種藍(lán)牙請(qǐng)求。
Bluetooth HAL也屬于Android 4.2新增模塊,它由藍(lán)牙核心規(guī)范硬件抽象層和藍(lán)牙應(yīng)用規(guī)范硬件抽象層組成。由于HAL層的隔離作用,上層代碼可輕松移植到不同芯片平臺(tái)。
作 為整個(gè)藍(lán)牙服務(wù)的核心,Bluetooth Stack模塊則由Bluetooth Application Layer(縮寫為BTA)和Bluetooth Embedded System(縮寫為BTE)兩大部分組成。BTA實(shí)現(xiàn)了藍(lán)牙設(shè)備管理、狀態(tài)管理及一些應(yīng)用規(guī)范。而BTE則通過(guò)HCI與廠商藍(lán)牙芯片交互以實(shí)現(xiàn)了藍(lán)牙協(xié) 議棧的通用功能和相關(guān)協(xié)議。另外,BTE還包括一個(gè)統(tǒng)一內(nèi)核接口(GKI),藍(lán)牙芯片廠商可借助GKI快速輕松得移植藍(lán)牙協(xié)議棧到其他操作系統(tǒng)或手機(jī)平臺(tái) 上。
Vendor Extentions(廠商擴(kuò)展):開發(fā)者可以添加自定義擴(kuò)展以實(shí)現(xiàn)廠商特定的模塊和組件。
除了BlueDroid外,在今年的Google I/O大會(huì),谷歌公司還宣布將于與蘋果、微軟和黑莓等公司共同支持Bluetooth Smart Ready(BSR,藍(lán)牙智能就緒)和Bluetooth Smart(BS,藍(lán)牙智能)技術(shù)。這項(xiàng)技術(shù)使藍(lán)牙設(shè)備或應(yīng)用可以非常容易地連接全球成千上萬(wàn)的藍(lán)牙設(shè)備,藍(lán)牙使用者的生活也因此變得更加簡(jiǎn)單。BSR和BS都是建立在藍(lán)牙核心規(guī)范4.0和GATT應(yīng)用規(guī)范。即將發(fā)布的Android 4.3(MR2)支持BSR技術(shù),使得BS的開發(fā)者可以輕易地將其設(shè)備和應(yīng)用與Android BSR設(shè)備進(jìn)行連接和發(fā)布。藍(lán)牙使用者運(yùn)用BS的智能應(yīng)用配件(如健康監(jiān)控或醫(yī)療設(shè)備)收集數(shù)據(jù),再傳送到支持BSR設(shè)備(如智能手機(jī)或平板)上。
另外,藍(lán)牙SIG也正在研發(fā)工具Bluetooth Application Accelerator(藍(lán)牙應(yīng)用加速器)。據(jù)可靠消息,該工具將隨Android 4.3發(fā)布,并將幫助開發(fā)者在Android 4.3上快速開發(fā)藍(lán)牙應(yīng)用,從而加快相關(guān)產(chǎn)品的研發(fā)時(shí)間。
三 總結(jié)
本文對(duì)藍(lán)牙核心規(guī)范、藍(lán)牙應(yīng)用規(guī)范以及Android 4.2中的藍(lán)牙協(xié)議棧BlueDroid進(jìn)行了一些簡(jiǎn)單介紹。
從筆者了解的情況來(lái)看,BlueDroid雖然對(duì)BlueZ大有取而代之的趨勢(shì),但現(xiàn)在它對(duì)藍(lán)牙應(yīng)用規(guī)范的支持還不夠完善。例如BlueDroid僅支持AVRCP 1.0,而非最新的AVRCP 1.5。所以,國(guó)內(nèi)某些芯片或手機(jī)廠商若能及早完成BlueZ相關(guān)模塊到BlueDroid的移植工作,相信能幫助它們?cè)诟?jìng)爭(zhēng)日趨白日化的移動(dòng)世界中拔得先機(jī)。
另外,作為一種成熟、低功耗無(wú)線通信技術(shù)的先鋒,藍(lán)牙未來(lái)在可穿戴設(shè)備領(lǐng)域中也將扮演越來(lái)越重要的作用。那時(shí),藍(lán)牙或許就會(huì)真正像“牙齒”一樣成為各種設(shè)備中不可或缺的一部分了。
本文鏈接:http://my.oschina.net/u/994235/blog/300402