我必须构建一个运行大约一天的 GPS 跟踪器的应用程序。我知道 SO 中有类似的问题,但我还没有找到一些问题的答案。
-我需要每 10 分钟进行一次 GPS 定位,所以我认为最好的方法是启动定位服务,获取定位服务(或超时)并停止服务(使用 removeUpdates()
)。我怎样才能让一个应用程序(或服务或其他)每 10 分钟运行一次这个周期,并确保只要还有一些电池就会继续运行(即使设备进入休眠状态,它也应该每 10 分钟唤醒一次以获得修复)?使用 AlarmManager 是个好主意吗?
-用这种方法我能期望电池能用一天吗?
我检查过 mytracks但 gps 监听器似乎始终处于打开状态,电池预计可持续使用不超过 5 小时。
我还检查了 CWAC Location Poller但它只在超时时执行 removeUpdates()
并立即重新启动监听器。它还使用唤醒锁,而就我而言,我认为 AlarmManager 可能是更好的主意。
欢迎任何帮助/建议
最佳答案
你对我使用的警报管理器很满意
Intent serviceIntent = new Intent(this, TrackerService.class);
mPendingIntent = PendingIntent.getService(this, 0, serviceIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(mPendingIntent);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), interval, mPendingIntent);
在用于获取网络位置的类似应用中
启动服务之间的间隔是毫秒
服务启动,获取位置并关闭
这比等待报告的活跃服务更省电
我发布的代码首先取消了之前的警报,所以你不会得到超过 1 :)
关于android - 保持 GPS 服务运行并优化电池生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7872863/