0

考虑到设备的 RSSI 和校准的传输功率,我正在尝试获得 BLE 设备的估计范围。

校准的 txPower 应该作为外围 iBeacon 广告包中的最后一个字节发出。根据我找到的文档,这些数据包的长度应为 30 个字节。

但是,返回byte[]的数据包长度为 62 字节。因此,广告数据的格式是未知的。

为什么会发生这种情况,有没有办法破译 62 字节数据包的格式?

4

1 回答 1

0

在扫描 BLE 设备时,Android API 不仅返回原始广告 PDU 的字节,还返回扫描响应 PDU。 后者在扫描 API 返回的字节数组中附加到前者的末尾。

出于这个原因,如果字节数组 访问信标字段,您不能可靠地使用从末尾的负偏移量。从一开始就使用正偏移量更可靠,但如果在制造商广告 PDU(您关心的那个)之前插入异常 PDU,即使这样也可能失败。

为了 100% 的可靠性,您必须解析所有 PDU,找到制造商广告之一,然后查看其中的字节。我在编写Android Beacon Library时很难学到这一点。它是开源的,所以即使你想自己进行扫描,看看它是如何做到的也是一个好主意。

于 2016-11-29T05:11:06.277 回答