Как сделать всю информацию iBeacon для каждого обнаружения? - PullRequest
0 голосов
/ 28 июня 2018

Я развернул 9 iBeacons в экспериментальной среде. Обнаружение региональных iBeacons с помощью:

public void onBeaconServiceConnect() {
    beaconManager.setRangeNotifier(new RangeNotifier() {
        @Override
        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
            System.out.println("The number of iBeacons detected = "+beacons.size());
        }
    });
    try {
        beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
    } catch (RemoteException e) {
    }
}

Выводится по:

I/System.out: The number of iBeacons detected = 2
I/System.out: The number of iBeacons detected = 4
I/System.out: The number of iBeacons detected = 8
I/System.out: The number of iBeacons detected = 7
I/System.out: The number of iBeacons detected = 9
I/System.out: The number of iBeacons detected = 4
I/System.out: The number of iBeacons detected = 4
I/System.out: The number of iBeacons detected = 5
I/System.out: The number of iBeacons detected = 6
I/System.out: The number of iBeacons detected = 3
I/System.out: The number of iBeacons detected = 6
I/System.out: The number of iBeacons detected = 2
I/System.out: The number of iBeacons detected = 7
I/System.out: The number of iBeacons detected = 7

Я подтверждаю, что каждый iBeacon работает нормально. Как сделать всю информацию iBeacon для каждого обнаружения?

1 Ответ

0 голосов
/ 28 июня 2018

Я подозреваю, что ваши маяки недостаточно часто рекламируются для надежного обнаружения.

Каждый изготовитель маяка имеет различную скорость рекламы по умолчанию - как часто отправляются пакеты. Стандарт iBeacon требует 10 Гц (10 пакетов в секунду), но многие производители маяков с батарейным питанием уменьшают это значение до 1 Гц (1 пакет в секунду) для экономии батареи.

Проблема заключается в том, что не 100% пакетов обнаруживаются даже в наилучших условиях, что является одной из причин, по которым Apple устанавливает скорость передачи в 10 раз больше обычной скорости измерения раз в секунду, чтобы обеспечить надежное обнаружение.

Чтобы исправить это, сделайте одно из двух:

  1. Сконфигурируйте ваши маяки, если возможно, для рекламы на частоте 10 Гц.
  2. Измените период сканирования на 10 секунд, чтобы увеличить время сбора дополнительных пакетов: beaconManager.setForegroundScanPeriod(10000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...