我正在开发一个提供后台信标监视的应用程序。当用户从定义的区域输入信标时,我想开始测距。不幸的是,我无法为Eddystone轮廓定义区域。当我使用Eddystone NamespaceID创建区域对象时,标识符会引发解析异常...

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


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

谢谢!

最佳答案

您可以这样定义一个与Eddystone-UID namespaceID匹配的Region:

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

关于android - AltBeacon:Android信标库。如何为Eddystone定义区域?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36062988/

10-10 09:25