提问者:小点点

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


我正在尝试在作为后台服务运行的应用程序中使用Android Beacon Library。我在我的服务启动时绑定了beaconManager。我正在onDestroy callBack中取消绑定它。

我设置iBeaconManager与setBackGroundScan期和setBackGroundBetweenScan期与一些默认值。

每当我运行应用程序时,我的服务都会被调用,它会自动扫描信标。回调方法didIntRegion和didExitRegion是根据信标可用性调用的,在didIntRegion callBack方法中,我调用startRangingBeaconsInRegion。

当我在同一个区域时,一切都很好。如果我离开一个遥远的位置,然后重新进入同一个位置,它就不会扫描信标。

位置改变真的会影响信标扫描吗?或者它只在特定时间扫描?任何人请帮我解决这个问题。提前感谢。


共1个答案

匿名用户

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

查看BeaconService是否仍在扫描的一种方法是启用调试日志记录。在应用程序上完成此操作后,您可以通过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

时间间隔可能更长,具体取决于库是否处于后台模式。

另一种方法是通过不绑定和取消绑定到服务中的BeaconManger来简化您的方法,而是将库附加到AndroidApplication类。这是首选方法,并使用Region onBootstrapBack地PowerSaver,如此处显示的参考应用程序中所述:https://github.com/AltBeacon/android-beacon-library-reference/blob/master/src/org/altbeacon/beaconreference/BeaconReferenceApplication.java