可以在后台进行范围监控吗?

Can range monitoring be done in the background?

根据站点http://altbeacon.github.io/android-beacon-library/samples.html提供的示例,我们可以使用RegionBootstrap对区域进行后台监控。

输入区域后,我不会启动应用程序,而是通过将应用程序 class 绑定为消费者来开始测距。然而,在调用BeaconManager.bind之后,onBeaconServiceConnect()并没有被调用。

这是库的限制还是我在测距方面做错了什么?

当使用 RegionBootstrap class 时,您不需要让您的应用程序 class 实现 BeaconConsumer 接口,因为 RegionBootstrap 实现在内部处理。您只需让应用程序 class 实现 BootstrapNotifier.

您可以在您在 在后台启动应用程序 部分下提到的 samples 页面中看到这方面的示例。请注意,该部分中的示例并未显式调用 BeaconManager 上的 bind 方法,应用程序 class 也未实现 BeaconConsumer

编辑:如果要添加背景测距,只需让应用程序class实现RangeNotifier,然后将以下内容添加到[=19] =]方法:

beaconManager.setRangeNotifier(this);
try {
    beaconManager.startRangingBeaconsInRegion(region);
} catch (RemoteException e) {    }