在信标上循环

时间:2019-03-21 23:24:44

标签: java android loops bluetooth-lowenergy beacon

@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(){ 做点什么 }

我如何保留信标

1 个答案:

答案 0 :(得分:0)

我经常在应用中使用BeaconTracker单例类,在其中我想跟踪每个信标的最近距离。您可以在这里看到一个示例:

https://github.com/davidgyoung/ningo-android/blob/master/app/src/main/java/com/davidgyoungtech/beaconscanner/BeaconTracker.java

您可以通过从didRangeBeaconsInRegion(...)回调中调用此类来使用此类:

BeaconTracker.getInstance(context).updateTrackedBeacons(beacons);

随后您可以访问跟踪的信标,以将距离与以下位置进行比较:

List<TrackedBeacon> trackedBeacons = BeaconTracker.getInstance(context).getTrackedBeacons();