在 Android 8+ 中无法获取 HIGH_ACCURACY 背景位置

Posted

技术标签:

【中文标题】在 Android 8+ 中无法获取 HIGH_ACCURACY 背景位置【英文标题】:Can't get HIGH_ACCURACY background locations in Android 8+ 【发布时间】:2018-01-29 18:55:56 【问题描述】:

android 8 仅允许每小时进行几次后台位置更新。这不是问题,因为我大约每小时只请求一次,并且只有在设备不是 STILL 并且还没有被动更新来完成这项工作的情况下。所以可能一天几次。在 Android 7 上无法检测到电池使用情况。

但是,我确实有精度要求,我会丢弃水平精度低于 1000 英尺的位置(基本上是蜂窝塔位置)。问题是网络位置几乎立即出现,然后应用程序被限制并且永远不会收到可能来自 GPS 的下一个更新。通常,我会等待一分钟以获得所需精度的位置,然后放弃。在 Android 8 上,即使我等待一个小时,由于节流,我也只能每 20 分钟左右获取一次网络位置。

我找不到任何可以完全解决问题的最低准确度的 LocationRequest 设置。 PRIORITY_HIGH_ACCURACYabsolutley 不会这样做。这只是一个“提示”。 setSmallestDisplacement() 没有帮助,因为它不影响第一次更新。批量更新在极少数情况下有助于我的测试,但没有任何可靠性。

此外,从用户的角度来看,在PRIORITY_HIGH_ACCURACY 中等待任何时间都是不合理的,因为即使应用程序受到限制,位置指示器也会一直在设备上处于活动状态。

有人对我如何解决这个问题有建议吗?也许Android根本不打算在后台使用PRIORITY_HIGH_ACCURACY,尽管我在文档中找不到任何相关信息。

【问题讨论】:

【参考方案1】:

如果您需要 GPS,只需使用 GPS 提供商即可。不要乱用标准,要求你真正需要的。

【讨论】:

这可以作为一种后备策略,但我不想一般仅限于 GPS 提供商。我只是有一个准确度要求,理想情况下来自 wifi 网络、“关闭”手机信号塔,或者谷歌对 FusedProvider 所做的任何其他魔法。我只希望 GPS 也包含在内。 回退到 GPS 工作,但有点太好了。似乎如果您在后台向 GPS 提供商重新请求,您根本不会受到限制。我已经打开了一个错误报告。 issuetracker.google.com/issues/72477437

以上是关于在 Android 8+ 中无法获取 HIGH_ACCURACY 背景位置的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 asmack 版本 asmack-android-8-4.0.6.jar 在 xmpp 中返回组列表

Ionic + Angular - 平台添加 Android 错误 - 错误:无法获取平台 cordova-android@0.0.8

无法获取 Android 广告 ID

来自 Android OS 8 或更高版本的连续 android 位置背景

如何在 Android 9.0(PIE) 中获取 WIFI SSID?

在 Android 8.1 中获取 WiFi 名称?