目前,我正在使用altbeacon库开发一个信标识别功能。我设计了一个特定的活动,当设备使用didRangeBeaconsInRegion()函数接近信标时触发事件。
当我第一次运行应用程序时,它会立即识别信标并触发一个事件。然而,当应用程序关闭并再次打开时,或者当活动离开并再次返回时,会有大约20秒的延迟。
如果你检查日志,下面的代码每5秒重复一次。此代码必须出现4次才能识别信标。有没有一种方法可以减少这种延迟或者一次识别所有的信标?
ScanState says background mode for ScanJob is false
2021-10-11 17:20:32.623 I/BluetoothAdapter: STATE_ON
2021-10-11 17:20:32.624 I/BluetoothAdapter: STATE_ON
2021-10-11 17:20:32.624 I/BluetoothAdapter: STATE_ON
2021-10-11 17:20:32.624 D/BluetoothLeScanner: Start Scan with callback
2021-10-11 17:20:32.625 D/BluetoothLeScanner: onScannerRegistered() - status=6 scannerId=-1 mScannerId=0我尝试了下面的代码来解决这个问题,但它没有解决我问的问题。
beaconManager.setForegroundScanPeriod(1100);
beaconManager.setForegroundBetweenScanPeriod(0);
beaconManager.setBackgroundScanPeriod(5000);
beaconManager.setBackgroundBetweenScanPeriod(300000); private static Long sampleExpirationMilliseconds=3000L;
beaconManager.setRssiFilterImplClass(RunningAverageRssiFilter.class);
RunningAverageRssiFilter.setSampleExpirationMilliseconds(sampleExpirationMilliseconds);发布于 2021-10-11 13:33:16
很难说到底是什么导致了这里的问题,因为您没有显示设置扫描的代码,以及设置扫描时的上下文(在从Android应用程序类启动新活动时,从Android服务启动)。
问题最有可能的原因是你的应用程序启动/停止扫描的方式,以及它与Android应用程序生命周期的交互方式。
以下是一些小贴士:
beaconManager.startRangingBeacons(...),并且不要直接调用bind(...)或unbind(...)。调用绑定和解除绑定是导致编程错误的常见原因。https://stackoverflow.com/questions/69523344
复制相似问题