Цикл на маяках - PullRequest
       12

Цикл на маяках

0 голосов
/ 22 марта 2019
@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) {    }
}

Я пытаюсь зациклить свои маяки и получить расстояние от всех моих маяков, но я хочу отслеживать расстояние каждого маяка, я хочу знать максимальное расстояние и минимальное расстояние между мной и маяками то, что я пытаюсь сказать и спросить, например, если расстояние между мной и маяком1 меньше, чем расстояние между мной и маяком2, что-то сделать, или если расстояние между мной и маяком2 больше, чем расстояние между мной и маяком3 .

Я знаю, что могу отслеживать каждый маяк с MAC-адресом, но как я могу держать и знать расстояние между мной и всеми маяками.

что я хочу сделать, это «если маяк с mac-адресом 1» .getDistance ()> «маяк с mac-адресом 2» .getDistance () { сделай что-нибудь }

Как я могу держать маяки

1 Ответ

0 голосов
/ 22 марта 2019

Я часто использую одноэлементный класс 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();
...