考虑到设备RSSI和校准传输功率,我试图获得BLE设备的估计范围。
校准的txPower应该作为外围设备iBeacon广告包中的最后一个字节发出。根据我发现的文档,这些数据包的长度应为30个字节。
但是,数据包的返回byte[]
长度为62个字节。因此,广告数据的格式是未知的。
为什么会发生这种情况,有没有办法解密62字节数据包的格式?
答案 0 :(得分:0)
扫描BLE设备时, Android API不仅返回原始广告PDU的字节,还返回扫描响应PDU。后者在字节数组中固定到前者的末尾由扫描API返回。
出于这个原因,如果字节数组访问信标字段,则无法可靠地使用结尾的负偏移量。使用从头开始的正偏移更可靠,但如果在制造商广告PDU(您关注的那个)之前插入了异常PDU,即使这样也会失败。
对于100%的可靠性,您必须解析所有PDU,找到制造商广告一,然后查看其中的字节。在撰写Android Beacon Library时,我学到了很多东西。它是开源的,所以即使您想要自己进行扫描,最好还是看看它是如何做到的。