关于使用Eddystone信标使用AltBeacon库监视多个区域,我有一个问题。
例如,我有3个信标,每个信标被分配到另一个区域,区域是根据信标的实例值定义的,即("region1“、null、"InstanceValueOfBeacon”、null),我对每个didEnterRegion都有不同的操作。
当我把所有的信标放在一起的时候。应用程序将如何响应?是否会因为发现多个信标而继续在不同区域之间切换?它只是做第一次发现的信标的动作吗?或者这到底是怎么回事?
发布于 2015-09-30 13:14:00
在监视发射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构造函数的最后一个参数也是空的,因为Eddystone-UID信标只有两个标识符。代码开始监视最后两行中的每个区域。
当第一次检测到与第一区域匹配的任何信标时(例如,带有第一个命名空间标识符的信标),didEnterRegion回调将被触发,传递给eddystoneUidRegion1对象的引用。如果检测到任何匹配第二个区域的信标,也会发生等效的回调。您可以通过检查传递给回调的Region对象的内容来判断检测到哪一个。当所有匹配受监视区域的信标消失时,didExitRegion会出现不同的回调。
这就是监视API的工作方式。还有一些范围很广的API给您一个大约1Hz的回调,其中包含与Region匹配的所有可见信标的列表。您是使用监控API还是远程API取决于您的用例。
https://stackoverflow.com/questions/32866169
复制相似问题