【问题标题】:How AltBean/Android manages active and passive BLE scan? Is it possible to set the library to perform only passive scans?AltBean/Android 如何管理主动和被动 BLE 扫描?是否可以将库设置为仅执行被动扫描?
【发布时间】:2019-03-19 22:14:33
【问题描述】:

如果我正确理解了 AltBeacon 的 Power Manager 文档。在 Android 5+ 设备上,该库将连续(或每隔几秒)执行被动扫描,并且有时还会执行主动扫描。主动扫描时间由setBackgroundScanPeriodsetBackgroundBetweenScanPeriod BeaconManager 的方法控制。

在我的例子中,我们正在使用的信标以恒定速率进行广告,并且它不会发送有关主动扫描 (SCAN_REQ) 的额外信息。

考虑到功耗,我想知道是否有一种方法可以使用该库来禁用主动扫描,即。 e.一旦我的 Android 设备靠近该信标,只执行被动扫描并获取我的信标发送的所有(或尽可能多的)广告数据包。总之,我们希望尽快检测到信标的存在,并在检测到后注册所有广告数据包,仅使用被动扫描。

这可能吗?如果是这样,我如何使用该库来获得这种行为?

【问题讨论】:

    标签: android bluetooth-lowenergy altbeacon


    【解决方案1】:

    两点:

    1. 当库文档提到主动与被动扫描时,它并不是在谈论发送 SCAN_REQ。 “被动”扫描仅意味着具有硬件数据包过滤器的低功耗 Android 扫描,该过滤器将扫描卸载到蓝牙芯片。然后,如果芯片看到与模式匹配的数据包,它就会唤醒操作系统。不过,就您的问题而言,图书馆完成的所有扫描都是被动的。

    2. 撇开术语差异不谈,如果您只想执行上述过滤后的低功耗扫描,您只需将后台扫描周期设置为 0。这可能适用于 Android 8+ 设备。在 Android 5-7 上,它可能无法正常工作,因为过滤扫描完全用于解析实际数据包。

    【讨论】:

      最近更新 更多