在监视传输 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 的工作方式。也有 Ranging API 以大约 1Hz 的频率为您提供回调,其中列出了与Region
. 您是使用监控 API 还是范围 API 取决于您的用例。