Если вы хотите изменить интервал сканирования по умолчанию для Android iBeacon Library, вы можете сделать это с помощью такой код:
try {
iBeaconManager.setForegroundScanPeriod(1100l); // 1100 mS
iBeaconManager.setForegroundBetweenScanPeriod(0l); // 0ms
iBeaconManager.updateScanPeriods();
}
catch (RemoteException e) {
Log.e(TAG, "Cannot talk to service");
}
Приведенный выше код устанавливает длительность сканирования 1100 мс и ожидание 0 мс между сканированиями. Это поведение по умолчанию.
Если вы хотите замедлить сканирование, вы обычно устанавливаете betweenScanPeriod
в ненулевое значение, например 30 секунд. Когда вы делаете это, вы должны установить scanPeriod
равным как минимум интервалу вещания ваших iBeacons — 1100 мс обычно достаточно, чтобы поймать рекламу iBeacons с частотой 1 Гц.
try {
iBeaconManager.setForegroundScanPeriod(1100l); // 1100 mS
iBeaconManager.setForegroundBetweenScanPeriod(30000l); // 30,000ms = 30 seconds
iBeaconManager.updateScanPeriods();
}
catch (RemoteException e) {
Log.e(TAG, "Cannot talk to service");
}
Стоит отметить, что на самом деле на iBeaconManager
есть две такие настройки, одна для переднего плана и одна для фона. Это делается исключительно для удобства, потому что вы обычно хотите, чтобы сканирование происходило реже, когда ваше приложение находится в фоновом режиме. Независимо от того, настраиваете ли вы параметры переднего плана и фона или принимаете значения по умолчанию, вы можете активировать настройки фонового режима с помощью:
try {
iBeaconManager.setBackgroundMode(myActivity, true);
}
catch (RemoteException e) {
Log.e(TAG, "Cannot talk to service");
}
Существует также Pro-версия библиотеки Android iBeacon, основанная на выше, чтобы автоматически перевести ваше приложение в режим переднего плана или в фоновый режим в зависимости от того, отображается ли действие. Это самый простой способ настроить фоновое энергосбережение на Android.
person
davidgyoung
schedule
12.03.2014