如何创建 Eddystone URL 标识符?
How to create Eddystone URL Identifiers?
我正在使用 Android Beacon Library 的 2.5.1 版,新增了对 Eddystone 的支持。在创建具有给定 URL 的新区域以仅过滤具有该 URL 的信标时,我很挣扎。例如,我只想处理以 http://example.com
开头的信标
我正在使用的 BeaconParser 布局将(在我的例子中)固定长度的 Scheme+Host+TLD 设置为 Id1,并将路径设置为 Id2。
如何为 Eddystone URL 信标创建一个 Identifier
?
我想像这样创建一个新区域:
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 包含一个实用程序 class 可以为您完成此 compression/decompression。
byte[] urlBytes = UrlBeaconUrlCompressor.compress("http://example.com")
Identifier identifier = Identifier.fromBytes(urlBytes, 0, urlBytes.length, false);
上面的第一行生成一个字节数组,可以使用第二行将其转换为标识符。请参阅 more information on working with URL beacons.
的库文档
我正在使用 Android Beacon Library 的 2.5.1 版,新增了对 Eddystone 的支持。在创建具有给定 URL 的新区域以仅过滤具有该 URL 的信标时,我很挣扎。例如,我只想处理以 http://example.com
我正在使用的 BeaconParser 布局将(在我的例子中)固定长度的 Scheme+Host+TLD 设置为 Id1,并将路径设置为 Id2。
如何为 Eddystone URL 信标创建一个 Identifier
?
我想像这样创建一个新区域:
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 包含一个实用程序 class 可以为您完成此 compression/decompression。
byte[] urlBytes = UrlBeaconUrlCompressor.compress("http://example.com")
Identifier identifier = Identifier.fromBytes(urlBytes, 0, urlBytes.length, false);
上面的第一行生成一个字节数组,可以使用第二行将其转换为标识符。请参阅 more information on working with URL beacons.
的库文档