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

时间:2015-10-07 07:56:31

标签: android bluetooth ibeacon-android altbeacon android-ibeacon

我正在寻找一种方法来检测给定区域内的所有信标,这些信标具有相同或不同的标识符(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米
  4. 信标全部放在同一区域,当给出3个唯一标识符时,例如B2具有与B1和B3不同的小标记,我可以验证是否检测到所有3个信标。这意味着手头的信标和我正在扫描的区域没有任何问题。

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

    当使用应用程序RadBeacon配置信标时,我实际上可以看到所有信标,即使它们具有相同的标识符。有人可以解释为什么会这样,以及如何解决这个问题?

    设定:
    设备:Android 5.1 LG G4(这也适用于三星Galaxy S6边缘)
    图书馆:AltBeacon 2.5.1

1 个答案:

答案 0 :(得分:2)

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

Beacon.setHardwareEqualityEnforced(true);

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