android - 保持 GPS 服务运行并优化电池生命周期

标签 android gps

我必须构建一个运行大约一天的 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/

相关文章:

android - 在 SQLite Android 数据库中存储自定义对象(用户定义的对象)

java - 实现可垂直和水平滚动的列表

android - Android ICS 上糟糕的 ListView 性能

node.js - 我如何将 GPS 数据发送到 parrot ar 无人机并转到我的无人机的 GPS 位置?

time - Unix 纪元和 GPS 纪元之间的刻度

android - 带有中心图像和下方文字的大按钮

android - 如何在 robolectric 中测试我是否在单击按钮时打开了 fragment ?

ios - 如何为图像 UIImagePicker Swift 4 添加属性

python - 名称错误 : global name 'message' is not defined

file - 使用 RTKLib 处理 GLONASS 数据时出现问题