Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何增加Android中BLE设备的扫描周期?_Android_Bluetooth Lowenergy_Ibeacon Android_Android Ibeacon - Fatal编程技术网

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

如何增加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 BLE服务的行为类似于iOS的“didRangeBeacons”方法,也就是说,它应该每一秒钟被调用一次。但是在安卓系统中没有这样的方法。但在安卓系统中,有一种“leScanCallback”方法,它在不到一秒钟的扫描周期内被频繁调用。那么,有没有什么方法可以在leScanCallback方法中实现我的功能,并将其扫描周期间隔增加到1秒,从而使其行为类似于iOS的“didRangeBeacons”方法

*在安卓系统中,持续扫描信标并增加扫描间隔是否会是一个糟糕的编程


提前感谢

了解Android中没有本机iBeacon支持是很重要的。Android
leScanCallback
方法与iOS
didRangeBeacons
方法完全不同

leScanCallback
方法仅在每次看到蓝牙设备的广告包时为您提供回调(在广告中设置了可连接位的设备仅在第一次看到其Mac地址时提供回调,直到您停止并重新启动扫描)。除非在计时器上停止并重新启动扫描,否则没有扫描周期,并且当数据包到达时会收到回调。这可能是每秒多次

在编写开源代码时,我必须从头开始构建所有功能,以创建一个与iOS中的功能相当的
didRangeBeanConsincinRegion
回调。为此,库大约每秒停止并重新启动一次扫描,并缓冲在循环中看到的所有ibeacon的列表,仅在循环结束时使用可见ibeacon的列表调用回调。这里没有讨论许多其他复杂问题


供您查看和修改,因此,如果您想自己动手,我鼓励您这样做。

谢谢David。我在复习你写的代码。这真是个好工作。现在我明白了扫描背后的逻辑。:)如果我们只想在应用程序位于前台而不是后台时进行扫描,那么什么更好呢?连续扫描或间隔扫描(比如1秒),您必须间隔扫描。许多Android设备都有一个蓝牙硬件层,每次扫描时,每个检测到的硬件设备只提供一个检测回调。需要停止并重新启动才能获得同一硬件设备的第二次回调。如果我们不在后台扫描,我们是否应该使用“BluetoothCrashResolver”?正如lib所说,“这对于大多数用户来说是罕见的,但对于那些在后台扫描Bluetooth LE设备的应用程序来说可能会有问题。”.同样的崩溃也会发生在前台应用程序上,是的,只是频率较低。