我正在开发一个Android应用程序,需要定期扫描附近的Wi接入点。目前,扫描每2-3分钟进行一次,这需要注册一个BroadcastReceiver
来捕获扫描结果,调用WifiManager
的startScan
方法并处理结果(在我的例子中,这也需要网络调用)。这个循环消耗了大量的能量,我想通过为应用程序实现智能电源策略来提高我的功耗。
除了在“繁忙时间”进行扫描(例如,在夜间停止循环)之外,我还在考虑使用SensorManager
中的加速度计来检测设备是静止的(放在桌子上)还是在运动中(例如,行走时在用户的口袋中)。然后,通过确定设备是否在移动,我可以调整扫描频率(当扫描频率固定时减小,当设备运行时增加扫描频率)。
关于这个问题,我有几个问题:
1)定期跟踪加速度计数据是否比每3-5分钟运行一次扫描回路更有效?跟踪加速度计的实际成本是多少?
2)如何确定该装置是静止的还是在运动中?我在网上看到了很多关于检测震动和倾斜的问题,但是关于自然运动检测的信息并不多。另外,我应该多久取样一次传感器?
发布于 2015-05-24 21:23:29
我认为最好的方法是使用google服务中包含的ActivityRecognitionApi
类,它是针对这样的目标进行优化的。这个类给出了一种方法:requestActivityUpdates
,该方法被优化为以最小功耗返回设备状态。
通过周期性地唤醒设备和读取传感器数据的短脉冲来检测这些活动。它只使用低功率传感器,以使功耗保持在最低限度。
发布于 2017-02-07 05:35:44
我支持Fouwad Wahabi对你问题的回答。我建议采取另一种方法的轨道加速度计和您的用户的活动。我会集成一个免费的SDK (在线可得),例如: 1. Tranql 2. Neura 3. Atooma这些SDK中的一些一旦发生,就会立即发送用户活动的详细信息,并且使用的电池不足1%。
https://stackoverflow.com/questions/30428080
复制相似问题