6

我正在尝试实现信标扫描程序,并且我希望 android BLE 服务的行为类似于 iOS“didRangeBeacons”方法,即它应该每隔一秒调用一次。但是在android中没有这样的方法。但是在 android 中有一个“leScanCallback”方法,它被非常频繁地调用,扫描周期不到一秒。那么有什么方法可以在 leScanCallback 方法中实现我的功能并将其扫描周期间隔增加到 1 秒,以便它的行为类似于 iOS 的“didRangeBeacons”方法。

*在android中不断扫描信标并增加其扫描间隔也会是糟糕的编程吗?

提前致谢

4

1 回答 1

10

重要的是要了解 Android 中没有原生 iBeacon 支持。AndroidleScanCallback方法根本不等同于 iOSdidRangeBeacons方法。

leScanCallback每次看到来自蓝牙设备的广告数据包时,该方法都会给您一个回调(在广告中设置了可连接位的设备仅在第一次看到其 Mac 地址时才会收到回调,直到您停止并重新开始扫描)。除非您在计时器上停止并重新开始扫描,否则没有扫描周期,并且您会在数据包到达时收到回调。这可以每秒多次。

在编写开源Android iBeacon 库时,我必须从头开始构建所有功能,以进行didRangeBeaconsInRegion与 iOS 中的回调等效的回调。为此,该库大约每秒停止并重新开始扫描一次,并缓冲循环中看到的所有 iBeacon 列表,仅在循环结束时使用可见 iBeacon 列表调用回调。还有很多其他的复杂性在这里没有讨论。

您可以免费查看和修改代码,因此如果您想自己动手,我鼓励您这样做。

于 2014-06-12T11:52:03.350 回答