2015-05-24 39 views
3

我正在研究需要定期扫描附近Wi-Fi接入点的Android应用程序。目前扫描每2-3分钟进行一次,这需要注册一个BroadcastReceiver来捕获扫描结果,调用WifiManagerstartScan方法并处理结果(在我的情况下也需要网络调用)。这个循环消耗了大量的能量,我想通过为应用实施智能电源策略来提高功耗。使用传感器数据的Android智能电源管理

除了仅在“繁忙时间”进行扫描(例如,在晚上停止循环),我正在考虑通过SensorManager使用加速度计来检测设备是静止的(放置在桌子上)还是在运动(例如,在步行时在用户的口袋中)。然后,通过确定设备是否在移动,我可以调整扫描频率(静止时减小,当设备运动时增加)。

我对此事的几个问题:

1)将定期跟踪加速计数据更耗电比运行扫描循环中每3-5分钟高效?跟踪加速度计真正花费多少功率?

2)如何确定设备是静止还是运动?我在网上看到很多关于检测抖动和倾斜的问题,但没有关于自然运动检测的大量信息。另外,我应该多频繁地采样传感器?

+0

你可以尝试getLastKnownLocation(){我认为这是方法名称关闭我的头}查询GPS,看看设备是否'固定' - 虽然比加速度计会给你一个固定的差异.. 。 –

回答

1

我认为最好的方法是使用Google Play服务中包含的ActivityRecognitionApi类,该类为此类目标进行了优化。该课程提供了一种方法:requestActivityUpdates,该方法经过优化,以最小功耗返回设备状态。

通过定期唤醒设备和 读取传感器数据的短阵列来检测活动。它只使用低功率传感器,以便将功耗保持在最低水平。

0

我第二个Fouwad Wahabi对你的问题的回答。 我会建议采取另一种方法来跟踪加速度计和用户的活动。我会整合一个免费的SDK(在线提供),例如: 1. Tranql 2. Neura 3. Atooma 其中一些SDK在用户活动发生后立即向您发送详细信息,并且使用率小于1%的电池。