2

我正在使用带有新添加的 Eddystone 支持的Android 信标库2.5.1 版。在创建具有给定 URL 的新区域以仅过滤具有该 URL 的信标时,我正在苦苦挣扎。例如,我只想处理以http://example.com

我正在使用的 BeaconParser 布局将(在我的情况下)固定长度的 Scheme+Host+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..." )。但我不确定这是否是最好和最干净的方法。

4

1 回答 1

1

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

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

上面的第一行生成一个字节数组,可以使用第二行将其转换为标识符。有关使用 URL 信标的更多信息,请参阅库文档。

于 2015-08-09T14:10:45.303 回答