@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(){
做一点事
}
我怎样才能保持信标
我经常在应用程序中使用 BeaconTracker 单例类,我想跟踪每个信标的最后距离。您可以在此处查看一个示例:
https://github.com/davidgyoung/ningo-android/blob/master/app/src/main/java/com/davidgyoungtech/beaconscanner/BeaconTracker.java 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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)