2014-08-20 3 views
0

Я экспериментировал с Android Beacon Библиотеку мониторинга IBeacon в фоновом режиме с помощью этого кода:Запуск приложения, когда IBeacon обнаружен

public class IBeaconBootstrap extends Application implements BootstrapNotifier { 

private RegionBootstrap regionBootstrap; 

@Override 
public void onCreate() { 

    super.onCreate(); 

    Log.d("IBeaconBootstrap", "App started up"); 

    // wake up the app when any beacon is seen (you can specify specific id 
    // filers in the parameters below) 

    Region region = new Region("MyRegion", null, null, null); 
    regionBootstrap = new RegionBootstrap(this, region); 

    // This is for Apple compatible iBeacons 
    BeaconManager.getInstanceForApplication(this).getBeaconParsers().add(new  BeaconParser().setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24")); 
} 

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

    Log.d("Boostrap didDetermineStateForRegion", "Region " + region.toString()); 
} 

@Override 
public void didEnterRegion(Region region) { 

    Log.d("Boostrap didEnterRegion", "Got a didEnterRegion call"); 

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    this.startActivity(intent); 
} 

@Override 
public void didExitRegion(Region region) { 

    Log.d("Boostrap didExitRegion", "Got a didExitRegion call"); 
} 
} 

, приложение идет на переднем плане, когда обнаруживает IBeacon, если он работает, но ничего не происходит, если приложение не работает. Предполагается ли, что ожидаемое поведение или приложение должно быть запущено, если оно не запущено?

ответ

2

Возможно, вам нужно уточнить, что вы подразумеваете под «приложение не работает». Вы имеете в виду: было установлено

  1. приложение, но никогда не запускала
  2. приложение было запущено один раз, но так как перезагружается
  3. Приложение был убит из переключателя задач

Используя код выше, вот ожидаемое поведение в каждом случае:

  1. Приложение не будет работать и не может автоматически запускать Activity.
  2. Приложение начнет сканирование маяков периодически после загрузки и запустит действие, если оно обнаружено.
  3. Приложение не будет работать и не может автоматически запускаться, пока зарядное устройство не подключится/не отключится или не перезагрузится. По прошествии этого времени поведение такое же, как в (2). Более подробная информации о данном случае доступны here.

Важно отметить, что при отсутствии активности не видна, библиотека будет делать только сканирование TYO ищет маяки каждые 5 минут, так что обнаружение может занять много времени. Этот интервал полностью настраивается.

Ограничения на случай (3) устанавливаются ОС Android. Должно произойти событие, позволяющее перезапустить приложение после его уничтожения пользователем.

+0

Благодарим вас за ответ. Меня интересует сценарий №3. Пользователь запускает приложение, использует его, а затем убивает его. Если я правильно понял ваш ответ, после того, как приложение было убито, оно больше не запускается, если пользователь не включит/отключит источник питания или не перезагрузит устройство. Правильно? Другими словами, чтобы приложение постоянно знало iBeacons, оно должно работать в фоновом режиме. Когда ibeacon находится в зоне действия, он может быть перенесен на передний план автоматически. – Fab

+0

Исправить. Я обновил свой ответ ссылкой на более подробное объяснение того, как это работает и почему: http://altbeacon.github.io/android-beacon-library/resume-after-terminate.html – davidgyoung

Смежные вопросы