如何增加Android中BLE设备的扫描周期?
我试图实现信标扫描程序,我希望android BLE服务的行为类似于iOS的“didRangeBeacons”方法,也就是说,它应该每一秒钟被调用一次。但是在安卓系统中没有这样的方法。但在安卓系统中,有一种“leScanCallback”方法,它在不到一秒钟的扫描周期内被频繁调用。那么,有没有什么方法可以在leScanCallback方法中实现我的功能,并将其扫描周期间隔增加到1秒,从而使其行为类似于iOS的“didRangeBeacons”方法 *在安卓系统中,持续扫描信标并增加扫描间隔是否会是一个糟糕的编程如何增加Android中BLE设备的扫描周期?,android,bluetooth-lowenergy,ibeacon-android,android-ibeacon,Android,Bluetooth Lowenergy,Ibeacon Android,Android Ibeacon,我试图实现信标扫描程序,我希望android BLE服务的行为类似于iOS的“didRangeBeacons”方法,也就是说,它应该每一秒钟被调用一次。但是在安卓系统中没有这样的方法。但在安卓系统中,有一种“leScanCallback”方法,它在不到一秒钟的扫描周期内被频繁调用。那么,有没有什么方法可以在leScanCallback方法中实现我的功能,并将其扫描周期间隔增加到1秒,从而使其行为类似于iOS的“didRangeBeacons”方法 *在安卓系统中,持续扫描信标并增加扫描间隔是否会
提前感谢了解Android中没有本机iBeacon支持是很重要的。Android
leScanCallback
方法与iOSdidRangeBeacons
方法完全不同
leScanCallback
方法仅在每次看到蓝牙设备的广告包时为您提供回调(在广告中设置了可连接位的设备仅在第一次看到其Mac地址时提供回调,直到您停止并重新启动扫描)。除非在计时器上停止并重新启动扫描,否则没有扫描周期,并且当数据包到达时会收到回调。这可能是每秒多次
在编写开源代码时,我必须从头开始构建所有功能,以创建一个与iOS中的功能相当的didRangeBeanConsincinRegion
回调。为此,库大约每秒停止并重新启动一次扫描,并缓冲在循环中看到的所有ibeacon的列表,仅在循环结束时使用可见ibeacon的列表调用回调。这里没有讨论许多其他复杂问题
供您查看和修改,因此,如果您想自己动手,我鼓励您这样做。谢谢David。我在复习你写的代码。这真是个好工作。现在我明白了扫描背后的逻辑。:)如果我们只想在应用程序位于前台而不是后台时进行扫描,那么什么更好呢?连续扫描或间隔扫描(比如1秒),您必须间隔扫描。许多Android设备都有一个蓝牙硬件层,每次扫描时,每个检测到的硬件设备只提供一个检测回调。需要停止并重新启动才能获得同一硬件设备的第二次回调。如果我们不在后台扫描,我们是否应该使用“BluetoothCrashResolver”?正如lib所说,“这对于大多数用户来说是罕见的,但对于那些在后台扫描Bluetooth LE设备的应用程序来说可能会有问题。”.同样的崩溃也会发生在前台应用程序上,是的,只是频率较低。