2014-12-05 29 views
0

在棒棒糖版本中,掃描結果方法返回BLE的所有詳細信息,例如地址,名稱掃描記錄,rssi等。我在製造數據字段中廣播了一些數據。我嘗試使用getScanRecord().getManufacturerSpecificData()爲了單獨提取製造數據並在字符串中進行分類,但他們已經使用稀疏數組來存儲數據。有什麼方法可以從數組中提取數據。在android棒棒糖中提取BLE的製造數據

所以這裏是logcat的數據:

12-05 17:31:39.101:I/ScanningMode(31818):實測值廣告與 設備名稱:DA14580-01,設備鍵狀態:12,設備地址: 80:EA:CA:00:00:01設備類型2設備藍牙類別1f00 RSSI -86掃描記錄ScanRecord mAdvertiseFlags = 6 mServiceUuids = null mManufacturerSpecificData = [2,2,2,2,2,2,2,2,2,2,2,2,2]], mServiceData = {},mTxPowerLevel = -2147483648, mDeviceName = DA14580-01],服務數據: {},tx等級:-2147483648

當我試圖使用

System.out.println("scan value :"+result.getScanRecord().getManufacturerSpecificData()); 

我喜歡這個在logcat的 :

12-05 17:31:39.102:I /的System.out(31818):掃描值:{514 = [B @ 61ce5dc}

任何人都可以糾正我如何獲取數據(這裏我應該只有2,2,2,2,2,2,2,2,2,2,2 ,2,2)

另外我已經從BLE設備廣播了14個數據包,但日誌貓只顯示12個數據包。

回答

1

雖然我還沒有使用.getManufacturerSpecificData()。我手動從scanRecord中選取數據,顯然它應該動態完成,但在我的情況下,我知道數據將在同一個地方。

我將scanRecord從字節轉換爲十六進制,並將其作爲字符串存儲,然後使用子字符串挑出所需的數據。

String advertData = DataManipulation.bytesToHex(scanRecord); 
if (advertData.contains(iBeaconIdentity)){ 
    String majorV = adData.substring(50, 54); 

希望這會指出你在正確的方向。