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

问题描述 投票:0回答:1

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

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

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

赞赏带有示例代码的API文档,该示例代码用于配置ALT Beacon库以进行过滤,这有助于避免在应用程序中执行其他过滤逻辑。

altbeacon
1个回答
0
投票

在UUID的前缀上进行过滤是不寻常的,但是可以通过定义自定义信标布局并定义一个附加标识符作为UUID前缀来实现。因为此新的额外标识符将被视为独立标识符,所以它不会像字符串前缀一样工作-其默认表示形式将是十六进制字符串(不带破折号)。

如果要为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不同的偏移量结束。

© www.soinside.com 2019 - 2024. All rights reserved.