我正在研究一个 BLE 项目我正在获取以下数据(在扫描 BLE 设备时以字节数组形式)作为广告数据 0x02011A09094F6E65506C757332020AF9 您可以在屏幕截图中看到三个数据包,谁能帮助我如何通过 java 代码获取所有三个数据包.
问问题
579 次
1 回答
1
你可以试试这个:
public SparseArray<byte[]> parseAdvertisingData(byte[] rawData) {
final SparseArray<byte[]> parsedData = new SparseArray<>();
for (int index = 0; index < rawData.length; ) {
final byte dataLength = rawData[index++];
if (dataLength == 0) {
break;
}
final int dataType = rawData[index];
if (dataType == 0) {
break;
}
byte[] data = Arrays.copyOfRange(rawData, index + 1, index + dataLength);
parsedData.put(dataType, data);
index += dataLength;
}
return parsedData;
}
这是一个简单的例子:
final byte[] rawData = Utils.parseHexBinary("02011A09094F6E65506C757332020AF9");
final SparseArray<byte[]> parsed = parseAdvertisingData(rawData);
for (int i = 0; i < parsed.size(); i++) {
final int type = parsed.keyAt(i);
final byte[] data = parsed.valueAt(i);
Log.d(TAG, String.format("type: 0x%02x, value: 0x%s", type,
new BigInteger(1, data).toString(16)));
}
结果:
type: 0x01, value: 0x1a
type: 0x09, value: 0x4f6e65506c757332
type: 0x0a, value: 0xf9
于 2018-08-23T10:35:34.013 回答