这是我的代码到目前为止: 此方法遍历我保存在数据库中的信标对象列表,并为列表中的每个信标创建一个区域:
for (nl.hgrams.passenger.model.vehicle.Beacon beacon : beacons) {
if (beacon.getUser_vehicle() != null) {
Utils.appendLog("Added a beacon region for: " + beacon.getName(), "I", Constants.TRACKER);
Region region = new Region("all-beacons-region", Identifier.parse(beacon.getUuid()), null, null);
regions.add(region);
}
}
然后我浏览列表,并致电startMonitoringBeaconsInRegion(region):
try {
for (Region region : regions) {
beaconManager.startMonitoringBeaconsInRegion(region);
}
} catch (RemoteException e) {
Log.e("", "region error trying to start ranging beacons in region");
e.printStackTrace();
}
但我注意到它只会监听它监控的最后一个区域。 为什么不听所有这些?我怎样才能让它听取所有地区的意见? 是否有可能将更多的uuids传递给某个地区或类似的东西,这会解决这个问题?
我试过用这个:
PSApplicationClass.getInstance().regionBootstrap = new RegionBootstrap(bootstrapNotifier, regions);
使用RegionBootstrap和我的Application类实现boostrapNotifier。 将它与在编辑前使用for循环代码创建的区域列表一起使用。 但是我调用EnteredRegion一次,然后我没有得到EXIT或ENTERED事件,为什么?
答案 0 :(得分:0)
问题在于:
Region region = new Region("all-beacons-region", Identifier.parse(beacon.getUuid()), null, null);
我正在设置第一个arg。对于所有区域:all-beacons-region
这将使它们被覆盖。因此,为什么只有最后一个被称为