2

I am experimenting the Android Beacon Library to monitoring iBeacon in background with this code:

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");
}
}

When the app is started, it checks every 3/5 minutes if any iBeacon is around and brings the app in foreground.

I actually need a more prompt response, is there any way to statically/dynamically change the checking interval?

Fab
  • 1,468
  • 1
  • 16
  • 37

1 Answers1

3

This is fully configurable with code like this:

// set the duration of the scan to be 1.1 seconds
beaconManager.setBackgroundScanPeriod(1100l); 
// set the time between each scan to be 1 minute (60 seconds)
beaconManager.setBackgroundBetweenScanPeriod(60000l);

Be careful when doing this as more frequent background scans will have impact on battery life. See here:

http://altbeacon.github.io/android-beacon-library/battery_manager.html

davidgyoung
  • 63,876
  • 14
  • 121
  • 204