我正在尝试使用uri-beacon检测(之前的Eddystone)android-beacon-library,但我不清楚如何将uri-beacon spec转换为BeaconLayout字符串。

example EddyStone stringsEddyStone spec进行比较也令人困惑。字节偏移量似乎不匹配。我必须在这里错过一些关键的事情。

最佳答案

根据最新的规范here,您可以使用以下方法解码Eddystone之前的URI信标:

beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("s:0-1=fed8,m:2-2=00,p:3-3:-41,i:4-21v"));


重要提示:我自己尚未对此进行测试,并且由于我无权访问原始URI信标,因此无法保证它会工作。如果确实使用此布局检测到信标,则需要将标识符解码为如下所示的URL:

String url = UrlBeaconUrlCompressor.uncompress(beacon.getId1().toByteArray());


上面的uncompress方法不适用于原始URI Beacon格式的urn:uuid:方案,但是它将解压缩常规URL。

您可以在此处阅读有关通过Android Beacon库使用URL信标的更多信息:https://altbeacon.github.io/android-beacon-library/eddystone-how-to.html

如果您确实可以使用此功能,请接受此答案或在下面发表评论,以确认布局。然后,我可以将布局添加到库的内置常量和文档中。

全面披露:我是Android Beacon Library开源项目的首席开发人员。

08-03 12:36