Android Gps Tracker 没有及时更新

Posted

技术标签:

【中文标题】Android Gps Tracker 没有及时更新【英文标题】:Android Gps Tracker not getting timely updates 【发布时间】:2017-08-23 23:50:21 【问题描述】:

我有一个开源 gps 跟踪应用程序,已经存在多年。最近,我收到抱怨说,在 android nougat 中,当手机拔下电源时,人们每 五分钟从手机获取一次更新,而不是每分钟一次更新.

即使我们尝试将其关闭,节电模式仍然存在问题。

有没有办法强制手机在拔掉电源时在指定时间获取 gps 更新?

这是代码,如果有人想看的话,但我不认为这是代码的问题。多年来一直非常稳定。

https://github.com/nickfox/GpsTracker/blob/master/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LocationService.java

谢谢。

【问题讨论】:

【参考方案1】:

Android 7/Nougat 的一个变化是 Doze 现在“更具侵略性”。在 Android 6/Marshmallow 中,当屏幕关闭、设备依靠电池运行且处于静止状态时,打盹模式会启动。

(这在Optimizing for Doze and App Standby中有记录)

现在在 Android 7 中,条件只是屏幕关闭并依靠电池运行。

(这在Android 7.0 Behavior Changes中有记录)

如果应用程序破坏了其核心功能,则可以将其列入白名单以免除限制。在您的情况下,他们这样做是因为 GPS 跟踪器需要实时记录坐标。

有Acceptable Use Cases for Whitelisting的列表

这包括:

任务自动化应用程序 | App的核心功能是自动调度 操作,例如即时消息、语音通话、新照片 管理,或位置操作

用户可以在设备设置中自行手动将应用列入白名单,也可以由应用请求加入白名单并由用户批准或拒绝。

Support for Other Use Cases 对此进行了介绍

引用:

应用可以触发 ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS Intent 将用户直接带到电池优化,在那里他们可以 添加应用。

拥有 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限的应用可以 触发系统对话框,让用户将应用添加到白名单 直接,不用去设置。该应用程序触发 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 意图触发 对话框。

用户可以根据需要手动将应用从白名单中移除。

最后一点当然很重要,但幸运的是可以通过编程方式检查白名单状态:

应用可以通过以下方式检查其当前是否在豁免白名单中 调用 isIgnoringBatteryOptimizations()。

因此,处理打瞌睡模式至少是一回事。

另一个问题是保持服务正常运行。但是服务被系统杀死可能会导致更多的随机时间间隔。当然还有using START_STICKY或running as a foreground service这样的经典。

【讨论】:

感谢您的出色回复。有电话的编码员尝试了这个(下),第 53-64 行,电话问他是否想将该应用程序列入白名单。他选择了是,但 GPS 时间没有改变。 gist.github.com/anonymous/817189e74f85e732f59bf1488e1c5927

以上是关于Android Gps Tracker 没有及时更新的主要内容,如果未能解决你的问题,请参考以下文章

Waterproof GPS Tracker Car Black Box YB02

Super Mini GPS Tracker for cars Taxi bus Motor

插入 android 平板电脑/手机时 GPS 是不是更准确

Android GPS 位置与其他 GPS 设备

在Android 8中使用带DOZE的GPS

在没有 GPS 的情况下获取设备移动方向