我正在寻找一种方法来检测给定区域内的所有信标,这些信标具有相同或不同的标识符(UUID,Major和Minor)。目前,我可以“随机”检测其中一个具有相同标识符的信标,而不是所有信标。
现在的情况如下:
我分别有3个信标:
信标全部放在同一区域,当给出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
答案 0 :(得分:2)
默认情况下,Android Beacon Library会将发送方的所有广告视为发送与单个信标相同的信标标识符。从库版本2.3开始,您可以配置此行为,以便将每个不同的发送器(由蓝牙MAC地址标识)视为不同的信标。这样做很简单:
Beacon.setHardwareEqualityEnforced(true);
默认行为和此配置对于不同的用例都有其优势。值得注意的是,在iOS设备上,CoreLocation通过蓝牙标识符跟踪信标,因此如上所述设置配置会更紧密地跟踪iOS的行为方式。该库可能会在未来的3.0版本中作为默认值切换到此。