Sve*_*ges 6 android ibeacon ibeacon-android
我写了自己的小BLE扫描服务,每隔3-5秒通过一次警报触发.它扫描1.1秒以获得它周围的信标,然后将RSSI信号转换为粗略接近.
我现在正在考虑Radius Networks Android iBeacon服务,但我想知道如何实现相同的后台扫描.
例如:我希望信标scannign在后台启动并运行,并将Intent接收到广播接收器,以决定我对扫描的信标做了什么.
有没有例子,估计这消耗了多少电池?
Radius Networks的Android iBeacon Library正是如此.在后台运行它所需要做的就是绑定IBeaconManager一个生命周期很长的东西.这可以是自定义android.app.Application对象,也可以是您自己的服务.由于您已经为自己的应用程序编写了自己的服务,因此可以轻松地IBeaconManager将该服务绑定到该服务,只要服务运行,它就会在后台保持活动状态.如果您愿意,您也可以使用您的服务发送广播意图,但对于大多数用例,这可能不是必需的.
至于电池使用情况,该库的参考应用程序有一个如何在库上设置后台模式的示例,因此扫描发生的频率较低,从而节省了电量.该参考应用程序中的相关代码如下:
@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);
}
Run Code Online (Sandbox Code Playgroud)
将背景模式设置为true可以将蓝牙扫描仅在5分钟内完成 - 这与iOS的操作类似.基于对Nexus 4的测试,这将手机的整体电池消耗从95mA降低到55mA(这两个数字都包括整个操作系统的耗电量.)
完全披露:我为Radius Networks工作,是Android iBeaconLibrary的主要作者.
| 归档时间: |
|
| 查看次数: |
7195 次 |
| 最近记录: |