如何定期在后台跟踪(如果可能)Android 设备(最新版本)?

Posted

技术标签:

【中文标题】如何定期在后台跟踪(如果可能)Android 设备(最新版本)?【英文标题】:How to track (if possible) an Android device (latest versions) in the background at regular intervals? 【发布时间】:2020-07-31 02:23:41 【问题描述】:

前提

应始终告知用户其敏感数据的使用情况(例如在后台收集位置),此问题旨在更好地了解 android 使用位置和后台操作时引入的最新限制。

问题

是否仍然有可能(在 Android 最新版本上)创建一个位置跟踪服务,无论应用程序状态如何(前台/后台)都将持续跟踪设备位置也不是设备状态(打盹或待机模式,应用程序桶),以便能够以一致的方式收集位置?

假设 GPS 和互联网连接已启用且可用,是否有可能收集位置,比如每 10 分钟一次,或者设备进入打瞌睡模式或待机状态会在一段时间后限制应用程序的可能性并推迟操作(如网络操作),从而无法保持定期获取位置更新?

在最新的 Android 版本上,从 Android 8.0 (API 26) 开始,引入了提高电池性能和保护用户隐私的新方法:

Background limitations Background location limits App standby buckets

我尝试了什么

据我了解,前台服务看起来是最好的选择:

不断通知用户(通知) 系统不会在几秒钟后终止服务(对于从 API 26 开始的后台服务) 不太可能被系统停止(START_STICKY 标志否则会重新启动) 可以获得唤醒锁

似乎仍然需要将应用列入白名单以避免电池优化,甚至需要禁用电池优化才能停止/延迟服务。

预期结果

定期接收位置更新,例如每 10 分钟一次

【问题讨论】:

【参考方案1】:

您必须在服务中使用 FusedLocationProviderClient 才能在指定的时间间隔或距离内为您提供位置。如果您选择距离,则还必须注意位置准确性。请参阅此article。

【讨论】:

以上是关于如何定期在后台跟踪(如果可能)Android 设备(最新版本)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中设置持久/定期计划?

iOS 后台位置跟踪在测试设备上失败

防止系统杀死后台应用程序

定期获取位置并绘制标记以映射

定期停止获取后台位置更新

Android - 由于设置撤销了位置权限导致应用崩溃