AltBeacon getIdentifier返回错误的值

时间:2016-03-22 09:48:30

标签: java android altbeacon beacon

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

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

h1

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

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

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

我必须承认,如果信标解析器依赖于我想要解码我的信标,或者我正在使用什么类型的信标,或者甚至两者都可以,我不会得到...

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

1 个答案:

答案 0 :(得分:2)

几点:

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

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

    < / LI>
  • 显示的信标布局字符串(“s:0-1 = feaa,m:2-2 = 10,p:3-3:-41,i:4-20v”)适用于Eddystone-URL ,这是一种具有单个可变长度标识符的格式,可以使用自定义压缩算法转换为URL字符串。

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

结论:

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

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

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