3

Привет, я создал приложение, использующее справочное приложение altbeacon. И я хочу вызвать didEnterRegion с помощью бутстрап-уведомления, когда приложение видит маяк в фоновом режиме. Но я не хочу, чтобы он сканировал фон каждые 5 минут, я хочу, чтобы приложение немедленно реагировало на новый маяк. Есть ли способ сделать это?Библиотека AltBeacon BootstrapNotifier не вызывает didEnterRegion

Мой код:

private static final String TAG = ".Application"; 
private final Identifier uuid = Identifier.parse("A1B2C3D4-AAAA-48D2-B060-D0C0D0C0D0C0"); 
private RegionBootstrap regionBootstrap; 

@Override 
public void onCreate() { 
    super.onCreate(); 

    Log.d(TAG, "App has started"); 

    Region region = new Region(TAG, uuid, null, null); 
    BeaconManager.debug = true; 
    BeaconManager.getInstanceForApplication(this).getBeaconParsers().add(
      new BeaconParser().setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24")); 
    regionBootstrap = new RegionBootstrap(this, region); 
} 

@Override 
public void didEnterRegion(Region region) 
{ 
    Log.i(TAG, "BACKGROUND ACTIVATED"); 
} 

@Override 
public void didExitRegion(Region region) { 

} 

@Override 
public void didDetermineStateForRegion(int i, Region region) { 

} 

}

ответ

2

Вы можете увеличить частоту поиска в фоновом режиме с помощью следующего кода:

beaconManager.setBackgroundBetweenScanPeriod(0l); 
beaconManager.setBackgroundScasnPeriod(1100l); 

Это сделает времена обнаружения фон так быстро, как в на переднем плане. Но будьте предупреждены, это заставит ваше приложение использовать большую мощность аккумулятора. Вы можете настроить интервал между периодами сканирования до вашего допуска к сливу батареи. Как вы отметили, значение по умолчанию составляет 5 минут (5 * 3600 л).

Android L имеет новые API сканирования, которые обещают помочь улучшить этот компромисс между таймерами обнаружения и использованием батареи. Но для приложений4.3 и 4.4 вам необходимо сделать судебный вызов.

+0

А как насчет функции regionBootstrap? Работает ли эта функция? Потому что в документах API он говорит: «Класс, позволяющий пользователю установить фоновый запуск приложения, когда пользователь входит в зону маяка». Это работает в фоновом режиме? Beacause я получаю только вызов didEnterRegion, когда я запускаю приложение. – Juraj

+0

Да, RegionBootstrap запустит приложение в фоновом режиме, и 'didEnterRegion' вызывается, когда обнаружен маяк, соответствующий указанному региону. Специфика того, как долго это займет, зависит от состояния вашего приложения. См. Здесь: http://altbeacon.github.io/android-beacon-library/resume-after-terminate.html – davidgyoung