藍芽ble 廣播包解析

2021-08-14 08:42:25 字數 1463 閱讀 9753

ad type定義

摘錄於:

借鑑與:

注意:該解析適合標準藍芽廣播,有的破壞者為了讓別人解析不出來會對廣播包資料打亂,需要還原真實廣播後才能解析。

擼起袖子開始搬

/**

* 解析ble廣播

* 1、藍芽廣播長度62 前31定義位廣播資料 後31位響應資料

* 2、有效資料部分 :包含若干個廣播資料單元,稱為 ad structure,每個單元可能存放電量,廠商名,藍芽名,server id 和資料 ,根據資料部分第乙個位元組確定型別。

* 3、無效資料部分 :因為廣播包的長度必須是 31 個 byte,如果有效資料部分不到 31 自己,剩下的就用 0 補全。

* 4、ad structure 的組成是:長度(第乙個位元組)+ 資料(資料部分第乙個位元組表示資料型別)

* 5、資料型別定義:

* 6、ble 廣播單元解析例子:

02 01 00 // 長度:2 型別: 01 資料 :00

10 ff 63 00 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b

//10為長度 ff型別即廠商 63...0b為真實資料

06 16 f4 18 01 02 03 //server uuid 攜帶引數

0a 09 42 6c 65 53 65 72 76 65 72 //藍芽完整名稱ascll碼對照

02 0a eb //電量

03 02 f4 18 //16位server uuid

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //補位

多個廣播單元組成ble廣播

*@param adv_data 62bite廣播

*@return map

*/public mapparsedata(byte adv_data) //長度為0即沒有資料 返回map退出迴圈

byte type = buffer.get(); //廣播單元:長度+資料len, 資料第乙個數為型別 真實資料部分len-1

log.i(tag, tohexstring(type)); //tohexstring(byte) 是integer.tohex..將16的byte轉字串

length -= 1; //去掉第乙個數(型別)才是真實資料

byte data = new

byte[length];//存放真實資料的陣列

buffer.get(data, 0, length); //取真實資料存放與data

switch (type)

}}

藍芽低功耗BLE廣播

廣播 低功耗藍芽裝置通過廣播通道發現其他裝置,乙個裝置進行廣播,而另乙個裝置進行掃瞄。1.advertising interval 2.advertising type 3.own address type 4.direct address type 5.direct address 6.adver...

藍芽廣播包

最近做藍芽 突然發現 ios 8.2 的 corebluetooth 在藍芽廣播包 中返回的 kcba atamanufacturerdata 資料 和 ios 9 或者 ios 10 返回的資料不一樣 然後開始了 以我的得到的 藍芽廣播資料為例 ios 8.2 kcba atamanufactur...

藍芽掃瞄過程解析 BLE藍芽協議棧簡介

ble藍芽協議棧是一段 用來實現低功耗藍芽協議的具體功能。一般來說,要實現乙個具體的ble應用,需要具備三個條件 乙個可以實現ble射頻的晶元,乙個與該晶元配套的ble協議棧,以及在該協議棧上開發的使用者應用 因此在實現ble應用時,ble協議棧起著非常關鍵的作用。ble藍芽協議棧包括很多層,可以在...