Radius Networks的

Android iBeacon Library正是如此.在后台运行它所需要做的就是将IBeaconManager绑定到具有长生命周期的东西.这可以是自定义的android.app.Application对象,也可以是您自己的服务.由于您已经为应用程序编写了自己的服务,因此可以轻松地将IBeaconManager绑定到该服务,只要服务运行,它就会在后台保持活动状态.如果您愿意,您也可以使用您的服务发送广播意图,但对于大多数用例,这可能不是必需的.

至于电池使用情况,图书馆的reference application有一个如何在磁带库上设置背景模式的示例,因此扫描发生的频率较低,从而节省电池电量.该参考应用程序中的相关代码如下:

@Override

protected void onPause() {

super.onPause();

if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this,true);

}

@Override

protected void onResume() {

super.onResume();

if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this,false);

}

将背景模式设置为true可以将蓝牙扫描仅在5分钟内完成 – 这与iOS的操作类似.基于对Nexus 4的测试,这将手机的整体电池消耗从95mA降低到55mA(这两个数字都包括整个操作系统的耗电量.)

完全披露:我为Radius Networks工作,是Android iBeaconLibrary的主要作者.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐