Bootstrapnotifier不会识别后来添加的信标| Android的灯塔库

时间:2016-10-04 14:26:56

标签: android android-bluetooth ibeacon-android altbeacon android-ibeacon

我正在使用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添加到后台服务?

1 个答案:

答案 0 :(得分:0)

您可以使用mRegionBootstrap.addRegion(...)方法,但只有在与信标服务建立连接后才会使用,否则将忽略该呼叫,您将在日志中看到Can't add bootstrap region

我怀疑正在发生的事情 - 建立连接通常需要不到一秒的时间,但是在后台启动的应用程序的时间可能会有所不同。不幸的是,onBeaconServiceConnected回调不是BootstrapNotifier接口的一部分,因此要知道何时执行此操作并不容易。

也许您可以简单地推迟构建RegionBootstrap,直到您了解自己的区域为止。没有理由早点构建它。