监控Eddystone信标

时间:2015-09-30 12:29:57

标签: ibeacon altbeacon android-ibeacon eddystone

我有一个问题,就是使用AltBeacon库监控多个地区的Eddystone信标。

例如,我有3个信标,每个信标都分配给另一个区域,区域是根据信标的实例值定义的,即(“region1”,null,“InstanceValueOfBeacon”,null)和我对每个didEnterRegion都有不同的操作。

现在我将所有信标放在一起。应用程序将如何响应?是否会继续在不同地区之间切换,因为找到了多个信标?它是否仅仅是首次发现的信标的动作?或者它是如何工作的?

1 个答案:

答案 0 :(得分:0)

监控传输Eddystone-UID的信标时,区域应设置如下:

Identifier eddystoneNamespaceId1 = Identifier.parse("0x00000000000000000001");
Identifier eddystoneNamespaceId2 = Identifier.parse("0x00000000000000000002");

Region eddystoneUidRegion1 = new Region("eddystoneUidRegion1",
    eddystoneNamespaceId1, null, null);
Region eddystoneUidRegion2 = new Region("eddystoneUidRegion1", 
    eddystoneNamespaceId2, null, null);

beaconManager.setRangeNotifier(this);
beaconManager.startMonitoringBeaconsInRegion(eddystoneUidRegion1);
beaconManager.startMonitoringBeaconsInRegion(eddystoneUidRegion2);

在此示例中,定义了两个不同的区域,每个区域都有一个10字节的不同Eddystone-UID名称空间标识符,以及一个空的Eddystone-UID实例标识符,因此它将匹配所有信标与这些名称空间。传递给Region构造函数的最后一个参数也为null,因为Eddystone-UID信标只有两个标识符。代码开始监视最后两行中的每个区域。

第一次检测到与第一个区域匹配的任何信标(例如,具有第一个名称空间标识符的信标)时,将触发didEnterRegion回调,并将引用传递给eddystoneUidRegion1对象。如果检测到与第二区域匹配的任何信标,则也会发生等效回调。您可以通过检查传递给回调的Region对象的内容来判断检测到哪一个。当所有与受监控区域匹配的信标消失时,didExitRegion存在不同的回调。

这就是监控API的工作方式。还有一些测距API可以在大约1Hz处进行回调,其中列出了与Region匹配的所有可见信标。您使用Monitoring API还是Ranging API取决于您的使用案例。