让BeaconManager监听多个区域/信标

时间:2018-03-05 13:45:50

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

这是我的代码到目前为止: 此方法遍历我保存在数据库中的信标对象列表,并为列表中的每个信标创建一个区域:

 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事件,为什么?

1 个答案:

答案 0 :(得分:0)

问题在于: Region region = new Region("all-beacons-region", Identifier.parse(beacon.getUuid()), null, null); 我正在设置第一个arg。对于所有区域:all-beacons-region这将使它们被覆盖。因此,为什么只有最后一个被称为