使用制造商标识符和 UUID 以特定格式开始过滤 Alt 信标

Filtering Alt beacon with manufacturer identifier and UUID begins with specific format

我的一个用例需要过滤由特定制造商生成且 UUID 以特定字符串开头的所有信标。

ALT 信标库(https://altbeacon.github.io/android-beacon-library/javadoc/reference/org/altbeacon/beacon/Region.html) 提供区域class 以根据ID1、ID2、ID3 过滤信标。

我找不到任何选项来过滤具有特定制造商 ID 且 UUID 以特定字符开头的库级别的所有信标。

API 文档中包含用于配置 ALT Beacon 库以进行过滤的示例代码,值得赞赏,这有助于避免在应用程序中实施额外的过滤逻辑。

过滤 UUID 前缀并不常见,但可以通过定义自定义信标布局并将附加标识符定义为 UUID 前缀来实现。因为这个新的额外标识符将被视为一个独立的标识符,它不会像字符串前缀一样工作——它的默认表示 will.be 一个十六进制字符串(没有破折号)。

如果您想过滤 iBeacon 的 UUID 的前五个字节,您可以像这样设置一个信标解析器:

beaconManager.getBeaconParsers().add(new BeaconParser().
               setBeaconLayout("m:2-3=0215,i:4-8,i:4-19,i:20-21,i:22-23,p:24-24")); // note the new 5 byte prefix identifier:  i:4-8

现在每个信标将有四个标识符而不是三个,第一个是 UUID 的前 5 个字节,第二个是完整的 UUID,第三个是主要的,第四个是次要的。

您可以设置一个区域来匹配此 UUID 的前五个字节,2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6,如下所示:

Region region = new Region("prefixRegion", "0x2F234454CF", null, null);

如果您希望前缀的长度不同于 5,只需调整上面布局的 i:4-8 部分以不同于 8 的偏移量结束。