我使用的是2.5.1版的Android Beacon Library,支持新添加的Eddystone。当创建一个给定URL的新区域时,我正在努力过滤只有该URL的信标。例如,我只想处理以http://example.com
我使用的BeaconParser布局将(在我的情况下)固定长度方案+主机+TLD设置为Id1和Id2的路径。
我如何创建一个Identifier
像Eddystone URL信标?
我想创建一个像这样的新区域:
Identifier exampleIdentifier = Identifier.parse("http://example.com");
Region exampleRegion = new Region("Example Region", exampleIdentifier, null, null);
这显然不起作用,因为解析器不能处理给定的URL。这是不支持还是我完全走错了路?
对我有用的是首先将标识符转换为库理解的东西(即十六进制符号),然后尝试解析(.parse("0x123456..." )
)。但我不确定这是否是最好和最干净的方法。
Eddystone-URL使用自定义压缩算法将人类可读的URL转换为要传输的字节。Android Beacon Library包含一个实用程序类,它可以为你做这个压缩/解压缩。
byte[] urlBytes = UrlBeaconUrlCompressor.compress("http://example.com")
Identifier identifier = Identifier.fromBytes(urlBytes, 0, urlBytes.length, false);
上面的第一行生成一个字节数组,可以使用第二行将其转换为标识符。有关使用URL信标的更多信息,请参阅库文档。