如何增加Android中BLE设备的扫描周期?

时间:2014-06-12 09:25:27

标签: android bluetooth-lowenergy ibeacon-android android-ibeacon

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

*在android中持续扫描信标并增加其扫描间隔也是不好的编程吗?

提前致谢

1 个答案:

答案 0 :(得分:9)

了解Android中没有本机iBeacon支持非常重要。 Android leScanCallback方法完全不等同于iOS didRangeBeacons方法。

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

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

The code is free供您查看和修改,所以如果您想自己动手,我建议您这样做。