@Override
public void onBeaconServiceConnect() {
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for (Beacon beacon : beacons) {
Beacon.setHardwareEqualityEnforced(true);
Log.i("MainActivity", "I see a beacon that is about "+ beacon.getDistance() +" meters away. ");
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
我试图在信标上循环并获取与所有信标的距离,但是我想跟踪每个信标的距离,我想知道我与信标之间的最大距离和最小距离,例如,如果我和beacon1之间的距离小于我和beacon2之间的距离,或者我和beacon2之间的距离大于我和beacon3之间的距离,
我知道我可以使用mac地址跟踪每个信标,但是我如何握住并知道我与所有信标之间的距离。
我想做的是“如果mac地址为1的信标。.getDistance()>“ mac地址为2的信标” .getDistance(){ 做点什么 }
我如何保留信标
答案 0 :(得分:0)
我经常在应用中使用BeaconTracker单例类,在其中我想跟踪每个信标的最近距离。您可以在这里看到一个示例:
您可以通过从didRangeBeaconsInRegion(...)回调中调用此类来使用此类:
BeaconTracker.getInstance(context).updateTrackedBeacons(beacons);
随后您可以访问跟踪的信标,以将距离与以下位置进行比较:
List<TrackedBeacon> trackedBeacons = BeaconTracker.getInstance(context).getTrackedBeacons();