保持GPS服务活跃并优化电池寿命

时间:2011-10-24 08:18:36

标签: android gps

我必须在大约一天内建立一个运行GPS跟踪器的应用程序。我在SO中也知道类似的问题,但我没有找到任何问题的答案。

- 我需要每10分钟进行一次GPS定位,所以我认为最好的方法是启动定位服务,获得修复(或超时)并停止服务(使用removeUpdates())。如何让应用程序(或服务或其他)每10分钟运行一次这个循环,并确保只要剩余电量就会继续(即使设备进入睡眠状态,它应该每10分钟唤醒一次以获得修复)?使用AlarmManager是个好主意吗?

- 我希望这种方法可以让电池持续一天吗?

我已经检查了mytracks,但gps监听器似乎一直处于打开状态,预计电池续航时间不会超过5小时。

我还检查过CWAC Location Poller,但在超时时它只会removeUpdates()并立即重启监听器。它也使用唤醒锁,而在我的情况下,我认为AlarmManager可能是一个更好的主意。

任何帮助/建议欢迎

2 个答案:

答案 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或更高版本