Android 8仅允许每小时更新几次背景位置。这不是问题,因为我每小时只请求一次,并且只有当设备不是STILL
并且还没有被动更新完成工作时。所以也许一天几次。在Android 7上没有可检测到的电池使用。
但是,我确实有准确度要求,我丢弃水平精度低于约1000英尺(基本上是手机信号塔位置)的位置。问题是网络位置几乎立即出现,然后应用程序被限制,并且永远不会收到可能来自GPS的下一次更新。通常情况下,我会等待一分钟,以获得所需的准确性,然后放弃。在Android 8上,即使我等了一个小时,我也只是因为节流而每20分钟左右得到一个网络位置。
我找不到任何可以完全解决问题的最小精度的LocationRequest设置。 PRIORITY_HIGH_ACCURACY
绝对不会这样做。这只是一个“暗示”。 setSmallestDisplacement()
无效,因为它不会影响第一次更新。批量更新在我的测试中很少见,但没有任何可靠性。
此外,从用户的角度来看,PRIORITY_HIGH_ACCURACY
等待任何时间长度都是不合理的,因为即使应用受到限制,位置指示器也会在整个设备上一直处于活动状态。
有没有人就如何解决这个问题提出建议?也许Android根本不打算在后台使用PRIORITY_HIGH_ACCURACY
,虽然我在文档中找不到任何相关内容。
答案 0 :(得分:0)
如果您需要GPS,请使用GPS提供商。不要乱用Criteria,请求你真正需要的东西。