藍(lán)牙低功耗(BLE)是在Android在4.3(API 18)中引入的。與經(jīng)典藍(lán)牙相比具有低延遲、低功耗、低吞吐量等優(yōu)點(diǎn)。藍(lán)牙通信之間遵循主從關(guān)系。

GATT(Generic Attribute PRofile):GATT配置文件作為通用規(guī)范,用于在ble鏈路上發(fā)送和接收數(shù)據(jù)塊。配置文件是設(shè)備如何在特定的應(yīng)用程序中工作的規(guī)格說(shuō)明。一個(gè)設(shè)備可以實(shí)現(xiàn)多個(gè)配置文件。
ATT(Attribute Protocol):每個(gè)屬性通過(guò)一個(gè)唯一的統(tǒng)一標(biāo)識(shí)符(UUID)來(lái)實(shí)現(xiàn),每個(gè)String類型的UUID使用128 bitb標(biāo)準(zhǔn)格式。
Service:是Characteristic的集合,每個(gè)Service代表從機(jī)的一種能力。
Characteristic:一個(gè)Characteristic包括一個(gè)單一的變量和N個(gè)用來(lái)描述Characteristic變量的Descriptor。
Descriptor:用來(lái)描述Characteristic變量的屬性。
注: Profile可以理解成一種規(guī)范,存在于從機(jī)中,一個(gè)低功耗藍(lán)牙可以包括多個(gè)Profile。 通過(guò)UUID可以直接找到對(duì)應(yīng)的Service; 通過(guò)UUID可以直接找到對(duì)應(yīng)的Characteristic; 通過(guò)UUID可以直接找到對(duì)應(yīng)的Descripter;
問(wèn)題: 藍(lán)牙低功耗單次發(fā)送的數(shù)據(jù)量大于 20 字節(jié), Android 只能接收前20個(gè)字節(jié)的數(shù)據(jù),后面的數(shù)據(jù)將會(huì)丟失 。
解決方案:分包發(fā)送 分包發(fā)送時(shí)不要在當(dāng)前線程做阻塞處理。并且一定要在上次發(fā)送數(shù)據(jù)成功寫(xiě)入(onCharacteristicWrite()回調(diào)執(zhí)行)之后再去進(jìn)行第二次寫(xiě)操作,否則第二次寫(xiě)操作將會(huì)失敗。
問(wèn)題:有時(shí)設(shè)備無(wú)法連接藍(lán)牙? 解決方案: 1) 主端一次性可同時(shí)連接6-7個(gè)藍(lán)牙設(shè)備進(jìn)行通信,因此可能是中心設(shè)備連接的設(shè)備數(shù)過(guò)多。 2) GATT連接是獨(dú)占的,一次只能被一個(gè)中心設(shè)備連接,一旦被連接,該外設(shè)會(huì)停止廣播,因此周圍設(shè)備是否已經(jīng)被其他中心設(shè)備所連接。
問(wèn)題: Android4.4的藍(lán)牙回調(diào)不在主線程。 解決方案:更新界面時(shí),需切換到主線程。
Android M中必須擁有定位權(quán)限才能掃描BLE設(shè)備。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注