我必须在大约一天内建立一个运行GPS跟踪器的应用程序。我在SO中也知道类似的问题,但我没有找到任何问题的答案。
- 我需要每10分钟进行一次GPS定位,所以我认为最好的方法是启动定位服务,获得修复(或超时)并停止服务(使用removeUpdates()
)。如何让应用程序(或服务或其他)每10分钟运行一次这个循环,并确保只要剩余电量就会继续(即使设备进入睡眠状态,它应该每10分钟唤醒一次以获得修复)?使用AlarmManager是个好主意吗?
- 我希望这种方法可以让电池持续一天吗?
我已经检查了mytracks,但gps监听器似乎一直处于打开状态,预计电池续航时间不会超过5小时。
我还检查过CWAC Location Poller,但在超时时它只会removeUpdates()
并立即重启监听器。它也使用唤醒锁,而在我的情况下,我认为AlarmManager可能是一个更好的主意。
任何帮助/建议欢迎
答案 0 :(得分:4)
我使用的是警报管理器
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);
在类似的应用程序中获取网络位置
启动服务之间的间隔为ms
服务启动,获取位置并关闭
这种电池效率更高,可以等待报告
我发布的代码首先取消之前的警报,所以你不会超过1:)
答案 1 :(得分:0)
您可以查看Passive Receiver 每当设备位置更新时,它都会为您提供位置更新 - 仅适用于2.2或更高版本