AltBeacon:Android 信标库。如何为 Eddystone 定义区域?

AltBeacon: Android Beacon Library. How to define region for Eddystone?

我正在开发一个提供后台 Beacon 监控的应用程序。当用户从定义的区域进入信标时,我想开始测距。不幸的是,我无法为 Eddystone 配置文件定义区域。当我使用 Eddystone NamespaceID 创建区域对象时,标识符抛出解析异常...

Region region = new Region("backgroundRegion",Identifier.parse("f7826da6bc5b71e0893e"), null, null);

根据文档 (https://altbeacon.github.io/android-beacon-library/javadoc/org/altbeacon/beacon/Identifier.html),当标识符采用 UUID 格式或整数时,解析工作正常。因此,当 Beacon 设置为 Eddystone 时,NamespaceID 是第一个标识符,它应该定义区域与 UUID 是 iBeacon 配置文件中的第一个标识符完全相同。我理解对吗?如果我在那种情况下是对的,我无法将 Eddystone NamespaceID 解析为区域标识符,也无法监控用户是否输入了设置为使用 Eddystone 配置文件的信标。如果我错了请纠正我,请告诉我如何为 Eddystone 信标定义区域。

谢谢!

您可以像这样定义与 Eddystone-UID namespaceID 匹配的区域:

Region region = new Region("my-beacon-region", Identifier.parse("0xf7826da6bc5b71e0893e"), null, null);

诀窍是在标识符前加上“0x”,以向库表明该标识符是一个多字节十六进制值。为方便起见,从 UUID 或整数值解析标识符时不需要前缀,但多字节十六进制值需要前缀,否则将无法区分“0x1000”(十进制 4096)和“1000”(十进制 1000) ).

在此处查看有关使用 Android Beacon Library Eddystone-UID 的更多详细信息:

http://altbeacon.github.io/android-beacon-library/eddystone-how-to.html