1惫企、BT4.0
藍(lán)牙4.0標(biāo)準(zhǔn)包含兩個(gè)藍(lán)牙標(biāo)準(zhǔn)议薪,準(zhǔn)確的說,是一個(gè)雙模的標(biāo)準(zhǔn)县匠,它包含傳統(tǒng)藍(lán)牙部分(也有稱之為經(jīng)典藍(lán)牙Classic Bluetooth)和低功耗藍(lán)牙部分BLE(Bluetooth Low Energy)风科。藍(lán)牙4.0芯片存在單模和雙模;
2乞旦、GAP贼穆、GATT
GAP(Generic Access Profile),它在用來控制設(shè)備連接和廣播兰粉。GAP 使你的設(shè)備被其他設(shè)備可見故痊,并決定了你的設(shè)備是否可以或者怎樣與合同設(shè)備進(jìn)行交互。例如 Beacon 設(shè)備就只是向外廣播亲桦,不支持連接崖蜜,小米手環(huán)就等設(shè)備就可以與中心設(shè)備連接。GAP 給設(shè)備定義了若干角色客峭,其中主要的兩個(gè)是:外圍設(shè)備(Peripheral)(這一般就是非常小或者簡單的低功耗設(shè)備豫领,用來提供數(shù)據(jù),并連接到一個(gè)更加相對(duì)強(qiáng)大的中心設(shè)備舔琅。例如小米手環(huán))和中心設(shè)備(Central)(中心設(shè)備相對(duì)比較強(qiáng)大等恐,用來連接其他外圍設(shè)備。例如手機(jī)等备蚓。)
GATT? (Generic Attribute Profile) 是一個(gè)在藍(lán)牙連接之上的發(fā)送和接收很短的數(shù)據(jù)段的通用規(guī)范课蔬,這些很短的數(shù)據(jù)段被稱為屬性(Attribute)。它定義兩個(gè) BLE 設(shè)備通過叫做 Service 和 Characteristic 的東西進(jìn)行通信郊尝。GATT 就是使用了 ATT(Attribute Protocol)協(xié)議二跋,ATT 協(xié)議把 Service, Characteristic遺跡對(duì)應(yīng)的數(shù)據(jù)保存在一個(gè)查找表中,次查找表使用 16 bit ID 作為每一項(xiàng)的索引流昏。
一旦兩個(gè)設(shè)備建立起了連接扎即,GATT 就開始起作用了,這也意味著况凉,你必需完成前面的 GAP 協(xié)議谚鄙。這里需要說明的是,GATT 連接刁绒,必需先經(jīng)過 GAP 協(xié)議闷营。實(shí)際上,我們?cè)陂_發(fā)中知市,可以直接使用設(shè)備的 MAC 地址傻盟,發(fā)起連接速蕊,可以不經(jīng)過掃描的步驟。這并不意味不需要經(jīng)過 GAP莫杈,實(shí)際上在芯片級(jí)別已經(jīng)給你做好了互例,藍(lán)牙芯片發(fā)起連接,總是先掃描設(shè)備筝闹,掃描到了才會(huì)發(fā)起連接媳叨。GATT 連接需要特別注意的是:GATT 連接是獨(dú)占的。也就是一個(gè) BLE 外設(shè)同時(shí)只能被一個(gè)中心設(shè)備連接关顷。一旦外設(shè)被連接糊秆,它就會(huì)馬上停止廣播,這樣它就對(duì)其他設(shè)備不可見了议双。當(dāng)設(shè)備斷開痘番,它又開始廣播。中心設(shè)備和外設(shè)需要雙向通信的話平痰,唯一的方式就是建立 GATT 連接汞舱。
Service服務(wù) 和 Characteristic 特征值(包括一個(gè)單一的變量和N個(gè)用來描述Characteristic變量的descriptor,Descriptor 用來描述Characteristic變量的屬性)均需要通過一個(gè)UUID來識(shí)別宗雇。UUID為128昂芜,但是在BLE中,UUID通常用16位赔蒲,也就是兩個(gè)字節(jié)來替代泌神。16位UUID和128位UUID可以相互轉(zhuǎn)換.藍(lán)牙聯(lián)盟已經(jīng)定義了常用的藍(lán)牙服務(wù)UUID,如要自己定義(指16位的uuid舞虱,128位的uuid號(hào)可以自己隨便定義欢际,隨便改。)矾兜,可以向藍(lán)牙聯(lián)盟申請(qǐng)损趋。
3、BLE手機(jī)應(yīng)用開發(fā)
Android 從 4.3(API Level 18) 開始支持低功耗藍(lán)牙椅寺,但是只支持作為中心設(shè)備(Central)模式舶沿,這就意味著 Android 設(shè)備只能主動(dòng)掃描和鏈接其他外圍設(shè)備(Peripheral)。從 Android 5.0(API Level 21) 開始兩種模式都支持配并。
蘋果在IOS 6系統(tǒng)之后開始支持BLE 4.0,iPhone4s高镐,iPod 5溉旋,iPad 3等之后的機(jī)型開始內(nèi)嵌BLE4.0硬件,并且蘋果在BLE4.0之后嫉髓,對(duì)外部的連接設(shè)備已經(jīng)不在需要MFI認(rèn)證观腊;
BLE開發(fā)流程:
a邑闲、檢測(cè)藍(lán)牙狀態(tài),掃描設(shè)備梧油;
b苫耸、連接設(shè)備,尋找服務(wù)Service儡陨;
c褪子、在服務(wù)Service里尋找特征值Characteristic;
d骗村、根據(jù)服務(wù)和特征值進(jìn)行數(shù)據(jù)收發(fā)嫌褪、添加通知處理等;(發(fā)送數(shù)據(jù)時(shí)都是 20 字節(jié)一個(gè)包)
4胚股、虛擬藍(lán)牙設(shè)備
Android 5.0和IOS都支持外圍設(shè)備(Peripheral)模式笼痛,這樣在手機(jī)中實(shí)現(xiàn)虛擬藍(lán)牙設(shè)備。比如終端設(shè)備中可以把內(nèi)置打印機(jī)虛擬成藍(lán)牙打印機(jī)設(shè)備琅拌;