当检测到iBeacon时启动应用程序



我正在试验Android Beacon Library在后台监控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正在运行时,应用程序将进入前台,但如果应用程序未运行则不会发生任何事情。这是预期的行为还是应用程序应该启动,如果它没有运行?

你可能需要澄清你所说的" app is not running"是什么意思。你的意思是:

  1. 应用程序已安装但从未启动
  2. 应用程序已经启动了一次,但又重新启动
  3. 应用程序已经被任务切换器杀死
使用上面的代码,下面是每种情况下的预期行为:
  1. 应用程序将不运行并且不能自动启动Activity。
  2. 应用程序将在启动后周期性地开始扫描信标,并在检测到信标时启动Activity。
  3. 应用程序将不会运行,不能自动启动,直到充电器连接/断开或重新启动。在此之后,行为如(2)所示。关于此案例的更多细节可在此处查看。

重要的是要注意,当没有活动可见时,库只会每5分钟做一次扫描来寻找信标,所以检测可能需要很长时间。这个间隔是完全可配置的。

案例(3)的限制是Android OS强加的。必须有一个事件发生,允许应用程序在被用户杀死后重新启动。

相关内容

  • 没有找到相关文章

最新更新