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

时间:2016-07-27 02:29:57

标签: android ibeacon-android beacon

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

width: 400px;

这不会检测以007b开头的信标。 当我记录该区域时,它会给出mRegionSuccess = new Region("BeaconsSuccess", Identifier.parse("0x007b", 2), null, null); 这123是7B的字节值。

我尝试使用完整的10字节命名空间的Identifier.parse函数,它正在工作。这个地区是id1: 123 id2: null id3: null

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

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"));

这有点像黑客攻击,但这可以让你做你想做的事。