如何创建Eddystone URL标识符



我使用的是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信标的更多信息,请参阅库文档。

最新更新