为最终的信标检测随机化扫描周期

Randomize scan period for eventual beacon detection

我正在尝试理解 android 信标库文档中使用的语句 "We recommend not reducing the scan period to be less than 1.1 seconds, since many beacons only transmit at a frequency of 1 Hz"。

是否因为扫描时间太少,我们可能会错过信标数据包? 我的用例需要控制电池消耗。我想问一下这种特殊情况是否可行。

我已将背景扫描时间设置为 20 毫秒,将背景扫描时间设置为 980 毫秒。

这意味着每秒扫描一次。此配置可以提高应用程序的响应能力。此外,由于扫描周期很短,它也应该可以节省电池电量。

1) 这个配置能检测到信标吗? 2)如果由于低扫描周期而遗漏,是否还有可能在下一次扫描中检测到信标? 3)如果传输频率为1Hz,如果错过一次,是否每次都会错过,因为后台扫描时间和扫描间隔时间的总和为1秒? 4) 如果是,在一个范围内随机化扫描周期会有帮助吗?

谢谢

考虑以下因素:

  1. 如果在扫描处于活动状态时通过空中发送信标数据包,则您有 90% 的机会在近距离检测到它。

  2. 如果在传输中开始或停止扫描,则不会检测到数据包。

  3. 扫描不是立即开始的。这需要时间。从您命令开始扫描开始,您将丢失数据包,直到扫描完全开始。这次所需时间取决于设备,但可能在 10 毫秒内。

  4. 如果设置的扫描周期短于信标传输速率,检测到它的几率大约会降低扫描周期除以传输周期的比率。

  5. BLE通告包发送不规律

所有上述因素都意味着短扫描间隔不利于可靠检测。如果您想节省电池电量,最好让扫描仪开启 1.1 秒,然后在您需要达到电池目标时将其关闭。尝试通过减少扫描周期和扫描周期之间的周期来加快平均检测时间只会使平均检测时间变慢,因为根据第 2 点和第 3 点循环打开和关闭所浪费的时间浪费了有用的扫描时间。