Android 使用传感器数据的智能电源管理

Android smart power management using sensor data

我正在开发一个 Android 应用程序,它需要定期扫描附近的 Wi-Fi 接入点。目前扫描每2-3分钟进行一次,这需要注册一个BroadcastReceiver来捕获扫描结果,调用WifiManagerstartScan方法并处理结果(这也需要网络在我的情况下调用)。这个循环消耗了很多能量,我想通过为应用程序实现智能电源策略来改善我的功耗。

除了仅在 "busy hours" 上扫描(例如,在晚上停止循环),我正在考虑通过 SensorManager 使用加速度计来检测设备是否静止(放置在 table) 上或在运动中(例如,在用户走路时放在口袋里)。然后,通过判断设备是否在移动,我可以调整扫描频率(静止时减少,运动时增加)。

关于这件事我有几个问题:

1) 定期跟踪加速度计数据是否会比 运行 每 3-5 分钟扫描一次循环更节能?跟踪加速度计实际需要多少功率?

2) 如何判断设备是静止的还是运动的?我在网上看到很多关于检测摇晃和倾斜的问题,但是关于自然运动检测的信息并不多。另外,我应该多久对传感器进行一次采样?

我认为最好的方法是使用 ActivityRecognitionApi class 包含在 google 播放服务中,该服务针对此类目标进行了优化。 class 给出了一种方法:requestActivityUpdates 以最小的功耗优化到 return 设备状态。

The activities are detected by periodically waking up the device and reading short bursts of sensor data. It only makes use of low power sensors in order to keep the power usage to a minimum.

我支持 Fouwad Wahabi 对您问题的回答。 我建议采用另一种方法来跟踪加速度计和用户的活动。我会集成一个免费的 SDK(在线提供),例如: 1. 宁静 2.神经 3. 阿图玛 其中一些 SDK 会在用户活动发生后立即向您发送用户活动的详细信息,并且耗电量不到 1%。