让 BeaconManager 监听超过 1 Region/beacon
Make BeaconManager listen for more than 1 Region/beacon
到目前为止,这是我的代码:
此方法遍历我保存在我的数据库中的信标对象列表,并为列表中的每个信标创建一个区域:
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();
}
但我注意到它只会监听它监控的最后一个区域。
为什么它不听所有的?我怎样才能让它听所有地区?
是否可以将更多的 uuid 传递给一个区域或类似的东西,这将解决这个问题?
编辑:
我试过用这个:
PSApplicationClass.getInstance().regionBootstrap = new RegionBootstrap(bootstrapNotifier, regions);
使用 RegionBootstrap 和我的应用程序 class 实现 boostrapNotifier。
将它与使用编辑之前的 for 循环代码创建的区域列表一起使用。
但是我调用了 EnteredRegion 一次,然后我就再也没有 EXIT 或 ENTERED 事件了,为什么?
问题出在这里:
Region region = new Region("all-beacons-region", Identifier.parse(beacon.getUuid()), null, null);
我正在设置第一个参数。对于所有区域:all-beacons-region
这将导致它们被覆盖。因此为什么只有最后一个被调用
到目前为止,这是我的代码: 此方法遍历我保存在我的数据库中的信标对象列表,并为列表中的每个信标创建一个区域:
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();
}
但我注意到它只会监听它监控的最后一个区域。 为什么它不听所有的?我怎样才能让它听所有地区? 是否可以将更多的 uuid 传递给一个区域或类似的东西,这将解决这个问题?
编辑:
我试过用这个:
PSApplicationClass.getInstance().regionBootstrap = new RegionBootstrap(bootstrapNotifier, regions);
使用 RegionBootstrap 和我的应用程序 class 实现 boostrapNotifier。 将它与使用编辑之前的 for 循环代码创建的区域列表一起使用。 但是我调用了 EnteredRegion 一次,然后我就再也没有 EXIT 或 ENTERED 事件了,为什么?
问题出在这里:
Region region = new Region("all-beacons-region", Identifier.parse(beacon.getUuid()), null, null);
我正在设置第一个参数。对于所有区域:all-beacons-region
这将导致它们被覆盖。因此为什么只有最后一个被调用