一旦我超出范围,再次进入该地区,信标就不会被扫描



我正试图在作为后台服务运行的应用程序中使用Android Beacon Library。我在服务启动时绑定beaconManager。我正在onDestroy回调中解除绑定。

我用setBackGroundScanPeriod设置iBeaconManager,并用一些默认值设置BackGroundBetweenScanPeriod。

每当我运行应用程序时,我的服务就会被调用,并自动扫描信标。回调方法didEnterRegion和didExitRegion是基于信标可用性调用的,在didEnterRegion回调方法中,我调用startRangingBeaconsInRegion。

当我在同一地区时,一切都很好。如果我去了一个很远的地方,然后重新进入同一个地方,那就不是在扫描信标。

位置变化真的会影响信标扫描吗?还是只扫描特定的时间?任何人请帮我渡过难关。提前感谢。

在没有看到代码的情况下无法确定,但我怀疑库在应用程序中的某个时刻停止了扫描。您提到了一个绑定和解除绑定到Beacon Manager的后台服务。你确定你的后台服务仍在运行吗?

查看Beacon Service是否仍在扫描的一种方法是启用调试日志记录。在你的应用程序上完成后,你可以通过usb电缆将应用程序连接到你的计算机,并使用下面的行从BeaconService中查找调试输出。

adb logcat | grep BeaconService

如果它正在扫描信标,你应该看到这样的行:

D/BeaconService(14202): Waiting to stop scan for another 1100 milliseconds
D/BeaconService(14202): Scan started
D/BeaconService(14202): Waiting to stop scan for another 100 milliseconds
D/BeaconService(14202): Done with scan cycle

根据库是否处于后台模式,时间间隔可能更长。

另一种选择是通过不绑定和取消绑定服务中的Beacon Manger来简化您的方法,而是将库附加到Android Application类。这是优选的方法,并使用RegionBootstrapBackgroundPowerSaver,如参考申请中所述,如下所示:https://github.com/AltBeacon/android-beacon-library-reference/blob/master/src/org/altbeacon/beaconreference/BeaconReferenceApplication.java

相关内容

最新更新