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

标签 android ibeacon-android android-ibeacon eddystone

我试图理解 android 信标库文档中使用的声明“我们建议不要将扫描周期减少到小于 1.1 秒,因为许多信标仅以 1 Hz 的频率传输”。

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

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

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

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

谢谢

最佳答案

考虑以下因素:

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

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

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

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

  5. BLE通告包不定时发送。

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

关于android - 为最终的信标检测随机化扫描周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44937057/

相关文章:

Android - 如何检查麦克风当前正在被其他应用程序使用

android - 将 Android Studio 项目与 Azure Pipelines CI/CD 集成

android - 我怎样才能 "refresh"我的 RegionBootstrap(Android 信标库)?

android - 如何找到进入和退出事件?

android - 室内导航信标

java - 借助Android上的SDK,如何改变iBeacon的参数值(UUID、Major、Minor、TxPower)

java - 如何使用 Android 铃声管理器播放 Assets 文件夹中的铃声?

java - 如何从首选项中获取保存的 arrayList

android - 使用 Radius Networks Android Beacon 库检测 iBeacons UUID

android - 服务未声明异常 : The BeaconService is not properly declared in AndroidManifest. xml