Identifier.parse(String , int) 没有给出预期的结果

Identifier.parse(String , int) not giving desired results

我正在使用 Android 信标库制作信标检测器应用程序。 我想检测以 007B 开头的 Eddystone UID。我正在使用

mRegionSuccess = new Region("BeaconsSuccess", Identifier.parse("0x007b", 2), null, null);

这不会检测以 007b 开头的信标。 当我记录该区域时,它给出 id1: 123 id2: null id3: null 这个123就是7B的字节值。

我用完整的 10 字节命名空间尝试了 Identifier.parse 函数,它可以正常工作。这里的区域是 id1: 0x007bxxxxxxxx id2: null id3: null

可能是什么问题?

API 不会那样工作。 它不会匹配部分标识符,只会匹配整个标识符。如果您创建一个第一个标识符为 0x007b 的区域,并尝试匹配一个第一个标识符为 0x007b0000000000000000 的信标,它不会匹配,因为 0x007b != 0x007b0000000000000000.

如果您真的只想匹配第一个标识符的前两个字节,您可以定义自定义信标格式变体 Eddystone-UID,将第一个标识符定义为命名空间的前两个字节。您可以使后两个标识符分别成为完整的命名空间和实例标识符。像这样:

beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("s:0-1=feaa,m:2-2=00,p:3-3:-41,i:4-5,i:4-13,i:14-19"));

这有点难,但这将允许您做您想做的事。