1

我正在尋找一種方法來檢測給定區域內具有相同或不同標識符(UUID,Major和Minor)的所有信標。目前,我可以用相同的標識符「隨機」檢測其中一個信標,而不是全部。如何檢測具有相同標識符的多個信標?

這裏是在手的情況:
我有3個信標,分別爲:

  1. B1(UUID:1,專業:1,次要:1) - 距離:1米
  2. B2( UUID:1,專業:1,次要:1) - 距離:5米
  3. B3(UUID:1,專業:1,次要:2) - 距離:6米

這些信標都放置在同一地區,並給予3單que標識符,例如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邊緣)
庫:AltBeacon 2.5.1

回答

2

默認情況下,Android Beacon Library會將所有廣告從發射機發送與單個信標相同的信標標識符。從庫版本2.3開始,您可以配置此行爲,以便將每個不同的發射器(由藍牙MAC地址標識)視爲不同的信標。這樣做很簡單:

Beacon.setHardwareEqualityEnforced(true); 

默認行爲和此配置對於不同的用例都有其優點。值得注意的是,在iOS設備上,CoreLocation通過藍牙標識符跟蹤信標,因此如上設置配置更緊密地跟蹤iOS的行爲方式。該庫可能會在未來的3.0版本中轉換爲默認版本。

相關問題