public void onBeaconServiceConnect() {
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
List<Beacon> beaconList = new ArrayList<Beacon>(beacons);
for (Beacon beacon : beacons) {
Beacon.setHardwareEqualityEnforced(true);
beaconList.add(beacon);
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, а else {
Log.i("MainActivity", "Less than 2 beacons detected");
часть кода никогда не выполняется, как я могу удалять или обновлять маяки, когда они находятся вне диапазона, поэтому, когда в список добавляются 2 маяка, но один из маяков находится вне диапазона, менее 2 маяков обнаруженный будет напечатан.