AltBeacon:Android Beacon Library。如何为Eddystone定义区域?

时间:2016-03-17 14:08:15

标签: android region altbeacon beacon eddystone

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以定义与Eddystone-UID namespaceID匹配的Region,如下所示:

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

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

在此处查看使用https://jsfiddle.net/3h85vhcx/处理Eddystone-UID的更多详细信息:

Android Beacon Library