我正在使用Android-Beacon-Library扫描信标并显示信息。在后台模式中,我想向用户发送通知。但是我在开发过程中遇到了一个问题。
我想在应用程序启动后添加我的Bootstrapnotifier应该查找的区域,因为我此时不知道它们。
这是我的代码:
在我的应用程序中创建方法:
mRegionBootstrap = new RegionBootstrap(this, new ArrayList<Region>());
在我知道信标之后,请浏览我的列表并添加它们:
for(BeaconModel beacon : mBeaconList) {
mRegionBootstrap.addRegion(new Region(beacon.getId(),
Identifier.parse(beacon.getUuid()),
Identifier.fromInt(beacon.getMajor()),
Identifier.fromInt(beacon.getMinor())));
}
On RunTime一切正常,信标被发现,我可以显示信息。
但是当我将应用程序移动到后台时,后台服务无法识别它们中的任何一个。
我认为后台服务只查找构造函数中的数组。
有没有办法稍后将Beacons添加到后台服务?
答案 0 :(得分:0)
您可以使用mRegionBootstrap.addRegion(...)
方法,但只有在与信标服务建立连接后才会使用,否则将忽略该呼叫,您将在日志中看到Can't add bootstrap region
。
我怀疑正在发生的事情 - 建立连接通常需要不到一秒的时间,但是在后台启动的应用程序的时间可能会有所不同。不幸的是,onBeaconServiceConnected
回调不是BootstrapNotifier
接口的一部分,因此要知道何时执行此操作并不容易。
也许您可以简单地推迟构建RegionBootstrap
,直到您了解自己的区域为止。没有理由早点构建它。