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

jul*_*jul 6 gps android

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

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

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

我已经检查了mytracks,但gps监听器似乎总是打开,电池预计持续不超过5小时.

我还检查了CWAC位置轮询器,但它仅removeUpdates()在超时时执行并立即重新启动侦听器.它也使用唤醒锁,而在我的情况下,我认为AlarmManager可能是一个更好的主意.

任何帮助/建议欢迎

dte*_*ten 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);
Run Code Online (Sandbox Code Playgroud)

在类似的应用程序中获取网络位置

启动服务之间的间隔是毫秒

服务启动、获取位置并关闭

这比在活动服务中等待报告的电池效率要高得多

我发布的代码首先取消了之前的警报,这样您就不会收到超过 1 个警报:)