我正在研究需要定期扫描附近Wi-Fi接入点的Android应用程序。目前扫描每2-3分钟进行一次,这需要注册一个BroadcastReceiver
来捕获扫描结果,调用WifiManager
的startScan
方法并处理结果(在我的情况下也需要网络调用)。这个循环消耗了大量的能量,我想通过为应用实施智能电源策略来提高功耗。使用传感器数据的Android智能电源管理
除了仅在“繁忙时间”进行扫描(例如,在晚上停止循环),我正在考虑通过SensorManager
使用加速度计来检测设备是静止的(放置在桌子上)还是在运动(例如,在步行时在用户的口袋中)。然后,通过确定设备是否在移动,我可以调整扫描频率(静止时减小,当设备运动时增加)。
我对此事的几个问题:
1)将定期跟踪加速计数据更耗电比运行扫描循环中每3-5分钟高效?跟踪加速度计真正花费多少功率?
2)如何确定设备是静止还是运动?我在网上看到很多关于检测抖动和倾斜的问题,但没有关于自然运动检测的大量信息。另外,我应该多频繁地采样传感器?
你可以尝试getLastKnownLocation(){我认为这是方法名称关闭我的头}查询GPS,看看设备是否'固定' - 虽然比加速度计会给你一个固定的差异.. 。 –