2

我正在开发一个提供后台信标监控的应用程序。当用户从定义的区域进入信标时,我想开始测距。不幸的是,我无法为 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 是 first Identifier,其定义的区域应与 UUID 是 iBeacon 配置文件中的 first Identifier 完全相同。我理解正确吗?如果我在这种情况下是正确的,我无法将 Eddystone NamespaceID 解析为区域标识符,也无法监控用户是否输入了设置为使用 Eddystone 配置文件的信标。如果我错了,请纠正我,并告诉我如何为 Eddystone 信标定义区域。

谢谢!

4

1 回答 1

2

您可以定义一个与 Eddystone-UID namespaceID 匹配的区域,如下所示:

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

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

在此处查看有关通过Android 信标库使用 Eddystone-UID 的更多详细信息:

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

于 2016-03-17T14:36:35.870 回答