检测到iBeacon时启动应用程序

时间:2014-08-20 07:25:18

标签: android ibeacon android-ibeacon altbeacon

我正在试验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正在运行时,应用程序会前进,但如果应用程序没有运行则没有任何反应。这是预期的行为还是应用程序如果没有运行应该启动?

1 个答案:

答案 0 :(得分:2)

你可能需要澄清你的意思"应用程序没有运行"。你的意思是:

  1. 该应用已安装但从未启动
  2. 该应用已启动一次,但自重启后
  3. 该应用程序已从任务切换器中杀死
  4. 使用上面的代码,以下是每种情况下的预期行为:

    1. 该应用程序将无法运行,无法自动启动活动。
    2. 应用程序将在启动后定期开始扫描信标,并在检测到活动时启动活动。
    3. 在充电器连接/断开或重启之前,应用程序将无法运行且无法自动启动。在此之后,行为如(2)中所示。有关此案例的更多详细信息,请访问here.
    4. 重要的是要注意,当没有可见的活动时,库只会每5分钟扫描一次信标,因此检测可能需要很长时间。此时间间隔是完全可配置的。

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