0

我的代码或信标返回“错误”值时遇到问题(用引号括起来,因为这很可能是我的代码中的错误)。我一直在阅读信标,据我所知,我可以给我的信标 3 个标识符。我已将信标的标识符配置为 000000000000001234(很多 0,以 1234 结尾),0001 为主要,0002 为次要。

这是我在测距信标时使用的一些代码:

String id1 = beacon.getId1().toString(); 
String id2 = beacon.getId2().toString();
String id3 = beacon.getId3().toString();

我假设这些将代表我在信标中拥有的标识符,但我为 id1 得到的值是“0x02676f6f2e67c ...”,并且 id2 和 id3 为空。我完全没戏了吗?

也许我使用了错误的解析器?(我在信标客户支持的邮件中收到了这个,虽然我没有指定我想使用标识符)

.setBeaconLayout("s:0-1=feaa,m:2-2=10,p:3-3:-41,i:4-20v"));

我必须承认,我不太明白信标解析器是否取决于我想如何解码我的信标,或者取决于我拥有什么样的信标,或者两者兼而有之..

作为记录,我使用的是 Android,但我认为这无关紧要。

4

1 回答 1

2

几点:

  • 有几种流行的信标格式,每种格式都传输不同数量的具有不同标识符长度的标识符。AltBeacon 和 iBeacon 分别发送 16、2 和 2 个字节的三个标识符。Eddystone-UID 分别发送两个 10 字节和 6 字节的标识符。Eddystone-URL 会发送一个长度在 1-17 字节之间的可变标识符。

  • 这个问题没有说明正在传输什么信标格式。听起来像是 iBeacon 或 AltBeacon,因为这些格式具有三部分标识符(有时称为 ProximityUUID,主要和次要)。但是这些格式的第一个标识符是一个 16 字节的 UUID,示例显示的标识符是这样的:000000000000001234,如果以十六进制显示,则可能是 9 个字节,如果以十进制表示,则可能是未知数量的字节。

  • 显示的信标布局字符串 ("s:0-1=feaa,m:2-2=10,p:3-3:-41,i:4-20v") 用于 Eddystone-URL,其格式为单个可变长度标识符,可以使用自定义压缩算法将其转换为 URL 字符串。

  • 使用单个标识符(ID2 和 ID3 为空)检测到的信标可能是 Eddystone-URL 传输。0x02676f6f2e67c...部分显示的ID1相当于“ http://goo.g ”的URL...

结论:

  • 检测到的信标可能不是您要检测的信标。

  • 您可能在附近有多个传输信标,或者有一个信标发送多个不同类型的传输,这就是您检测 Eddystone-URL 信标的原因。

  • 您打算检测的信标传输可能不是 Eddystone-URL 格式,因此您可能需要一个不同的 BeaconParser。您需要先弄清楚格式,以便添加正确的 BeaconParser。

于 2016-03-22T14:22:32.120 回答