Размер обнаруженных маяков не является точным - PullRequest
0 голосов
/ 24 марта 2019
@Override
public void onBeaconServiceConnect() {
    BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
    beaconManager.setRangeNotifier(new RangeNotifier() {
        @Override
        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {

            Beacon.setHardwareEqualityEnforced(true);
            List<Beacon> beaconList = new ArrayList<Beacon>(beacons);

            if (beaconList.size() >= 2) {
                if (beaconList.get(0).getBluetoothAddress().equals("20:91:48:4C:5A:34") && beaconList.get(1).getBluetoothAddress().equals("20:91:48:4C:5B:AF")) {
                    if (beaconList.get(0).getDistance() < beaconList.get(1).getDistance()) {
                        Log.i("MainActivity", "You're in room 1");
                    }
                }
                if (beaconList.get(1).getBluetoothAddress().equals("20:91:48:4C:5A:34") && beaconList.get(0).getBluetoothAddress().equals("20:91:48:4C:5B:AF")) {
                    if (beaconList.get(1).getDistance() < beaconList.get(0).getDistance()) {
                        Log.i("MainActivity", "You're in room 1");
                    }
                }
                if (beaconList.get(0).getBluetoothAddress().equals("20:91:48:4C:5B:AF") && beaconList.get(1).getBluetoothAddress().equals("20:91:48:4C:5A:34")) {
                    if (beaconList.get(0).getDistance() < beaconList.get(1).getDistance()) {
                        Log.i("MainActivity", "You're in room 2");
                    }
                }
                if (beaconList.get(1).getBluetoothAddress().equals("20:91:48:4C:5B:AF") && beaconList.get(0).getBluetoothAddress().equals("20:91:48:4C:5A:34")) {
                    if (beaconList.get(1).getDistance() < beaconList.get(0).getDistance()) {
                        Log.i("MainActivity", "You're in room 2");
                    }
                }
            } else {
                Log.i("MainActivity", "Less than 2 beacons detected");
            }
        }
    });

Всякий раз, когда я запускаю этот код и у меня есть 2 ibeacon онлайн, beaconList.size() должен быть равен 2, но вместо этого размер beaconList равен 1, а вывод, который печатается в журнале, -

03-24 172233.292 27699-27699net.simplifiedlearning.firebaseauth IMainActivity Вы в комнате 2
03-24 172234.412 27699-27699net.simplifiedlearning.firebaseauth IMainActivity Вы в комнате 2
03-24 172235.552 27699-27699net.simplifiedlearning.firebaseauth IMainActivity Вы в комнате 2
03-24 172236.737 27699-27699net.simplifiedlearning.firebaseauth IMainActivity Обнаружено менее 2 маяков
03-24 172237,857 27699-27699net.simplifiedlearning.firebaseauth IMainActivity Обнаружено менее 2 маяков
03-24 172239.012 27699-27699net.simplifiedlearning.firebaseauth IMainActivity Обнаружено менее 2 маяков
03-24 172241.292 27699-27699net.simplifiedlearning.firebaseauth IMainActivity Вы в комнате 2

Предполагается, что beaconList.size() имеет размер 2, так как у меня есть 2 ibeacon онлайн, и у меня есть Beacon.setHardwareEqualityEnforced(true); Но вместо этого каким-то образом размер равен 1 и продолжайте печатать менее 2 маяков, и вы вместо этого будете в комнате 2. В чем здесь проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...