我使用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
可能是什么问题?
答案 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"));
这有点像黑客攻击,但这可以让你做你想做的事。