- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我试图实现信标扫描程序,我希望 android BLE 服务的行为类似于 iOS 的“didRangeBeacons”方法,即它应该每隔一秒被调用一次。但是在android中没有这样的方法。但是在 android 中有一个“leScanCallback”方法,它被非常频繁地调用,扫描周期不到一秒。那么有什么方法可以在 leScanCallback 方法中实现我的功能并将其扫描周期间隔增加到 1 秒,以便它的行为类似于 iOS 的“didRangeBeacons”方法。
*另外在android中不断扫描beacon并增加其扫描间隔会不会是不好的编程?
提前致谢
最佳答案
重要的是要了解 Android 中没有原生 iBeacon 支持。 Android leScanCallback
方法根本不等同于 iOS didRangeBeacons
方法。
leScanCallback
方法只是在每次看到来自蓝牙设备的广告数据包时为您提供一个回调(在广告中设置了可连接位的设备仅在其 Mac 地址第一次出现时提供一个回调直到您停止并重新开始扫描)。除非您停止并重新启动计时器上的扫描,否则没有扫描周期,并且您会在数据包到达时收到回调。这可能是每秒多次。
写开源的时候Android iBeacon Library ,我必须从头开始构建所有功能,以制作一个与 iOS 中的等效的 didRangeBeaconsInRegion
回调。为此,库大约每秒停止并重新开始扫描一次,并缓冲循环中看到的所有 iBeacon 列表,仅在循环结束时使用可见 iBeacon 列表调用回调。这里没有讨论许多其他的复杂性。
The code is free供您查看和修改,因此如果您想自己动手,我鼓励您这样做。
关于android - 如何在 Android 中增加 BLE 设备的扫描周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24180849/
我是一名优秀的程序员,十分优秀!