如何检测具有相同标识符的多个信标



我正在寻找一种方法来检测给定区域内具有相同或不同标识符(UUID, Major和Minor)的所有信标。目前,我可以"随机"检测具有相同标识符的信标之一,而不是所有信标。

现在的情况是:
我有3个信标,分别是:

  1. B1(UUID: 1, Major: 1, Minor: 1) -距离:1米
  2. B2(UUID: 1, Major: 1, Minor: 1) -距离:5米
  3. B3(UUID: 1, Major: 1, Minor: 2) -距离:6米

信标都位于同一区域,当给定3个唯一标识符时,例如B2具有与B1和B3不同的次要标识符,我可以验证所有3个信标都被检测到。这意味着手头的信标没有问题,我正在扫描的区域也没有问题。

问题是,因为B1和B2有相同的标识符,我只收到一个集合包含:B1和B3或B2和B3在RangeNotifier.didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region)实现。

当使用应用RadBeacon配置信标时,我可以,事实上,看到所有信标,即使它们有相同的标识符。有人能解释一下为什么会发生这种情况以及如何解决这个问题吗?

设置:
设备:Android 5.1 LG G4(三星Galaxy S6 edge也适用)
库:AltBeacon 2.5.1

默认情况下,Android信标库将把来自发送相同信标标识符的发送器的所有广告视为单个信标。从库版本2.3开始,您可以配置此行为,以便将每个不同的发送器(由蓝牙MAC地址标识)视为不同的信标。这样做很简单:

Beacon.setHardwareEqualityEnforced(true);

对于不同的用例,默认行为和这个配置都有它们的优点。值得注意的是,在iOS设备上,CoreLocation会通过蓝牙标识符跟踪信标,因此将上述配置设置为更紧密地跟踪iOS的行为方式。在未来的3.0版本中,库可能会将其作为默认值。

相关内容

  • 没有找到相关文章

最新更新