首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iBeacon背景扫描

iBeacon背景扫描
EN

Stack Overflow用户
提问于 2013-12-09 16:10:53
回答 1查看 7.6K关注 0票数 6

我已经写了我自己的小BLE扫描服务,是通过警报触发每3-5秒。它扫描1.1秒,得到周围的信标,然后将RSSI信号转换成一个粗略的接近。

我现在正在考虑Radius网络安卓iBeacon服务,但我想知道我如何能够实现同样的背景扫描。

我希望信标开始运行,在后台运行,并将意图接收到广播接收机,以决定我对扫描的信标做什么。

是否有这样的例子,是否有一个估计的电池消耗多少?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-10 03:48:58

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

至于电池的使用,库的参考应用有一个例子说明如何在库中设置后台模式,这样扫描就不会频繁发生,从而节省电池。参考应用程序中的相关代码如下:

代码语言:javascript
复制
    @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的测试,这可以将手机的总电池消耗从95‘s降低到55’s(这两个数字都包括整个操作系统的耗电量)。

全面披露:我在Radius工作,是安卓iBeaconLibrary的主要作者。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20475190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档