如何创建Eddystone URL标识符?

时间:2015-08-09 12:41:49

标签: ibeacon-android eddystone

我正在使用Android Beacon Library版本2.5.1以及新添加的Eddystone支持。在创建具有给定URL的新Region时,我正在努力过滤仅使用该URL的Beacons。例如,我只想处理从http://example.com

开始的信标

我正在使用的BeaconParser布局将(在我的情况下)固定长度Scheme + Host + TLD设置为Id1和Id2的路径。

如何为Eddystone网址信标创建类似的Identifier

我想创建一个像这样的新区域:

Identifier exampleIdentifier = Identifier.parse("http://example.com");
Region exampleRegion = new Region("Example Region", exampleIdentifier, null, null);

这显然不起作用,因为Parser无法处理给定的URL。这是不支持还是我完全走错了路?

对我有用的是首先将标识符转换为图书馆理解的内容(即十六进制表示法)然后尝试解析(.parse("0x123456..." )。但我不确定这是否是最好的最干净的方式。

1 个答案:

答案 0 :(得分:1)

Eddystone-URL使用自定义压缩算法将人类可读的URL转换为传输的字节。 Android Beacon Library包含一个实用程序类,可以为您执行此压缩/解压缩。

byte[] urlBytes = UrlBeaconUrlCompressor.compress("http://example.com")
Identifier identifier = Identifier.fromBytes(urlBytes, 0, urlBytes.length, false);

上面的第一行生成一个字节数组,可以使用第二行转换为标识符。请参阅more information on working with URL beacons的图书馆文档。

相关问题