使用Google API的背景位置更新 - 融合位置提供程序不准确

Jos*_*hua 12 android google-api-client fusedlocationproviderclient

我一直在使用GoogleApiClientInterval和Displacement 更新来处理和测试背景位置更新.在测试和分析几天后,我发现输出中的一些变化,我没想到.

  1. 在使用setIntervalsetFastestInterval基于Interval的更新时,比如说我将Interval设置为15分钟,将Fastest Interval设置10分钟,90%的时间我在预期的间隔(10到15分钟)内获得更新.但有时我注意到更新所需的时间比指定的Interval长得多,例如,差异大约是30分钟和60分钟.关于为什么差异的任何想法?

  2. 在使用setMinimumDisplacement基于距离的更新时,比如说我已将Displacement设置为200米,我只能在200米及以上的静止点上进行更新(当旅行时,即使超过200米也没有更新).这是正常的吗?

我正在使用PendingIntent位置请求类型,以便BroadcastReceiver在后台接收位置更新的位置更新.

fusedLocationProviderClient.requestLocationUpdates(locationRequest, pendingIntent);
Run Code Online (Sandbox Code Playgroud)

测试时,位置服务开启,位置模式HIGH_ACCURACY.

Mit*_*iya 4

请参阅文档以获取 LocationRequest API 的正确行为。

LocationRequest API 文档

从这个文档:

  • 应用程序无法指定 .net 使用的确切位置源,例如 GPS LocationClient。事实上,系统可能运行多个位置源(提供者),并且可能将多个源的结果融合到单个位置对象中
  • ACCESS_COARSE_LOCATION来自带有和不带有的应用程序的位置请求ACCESS_FINE_LOCATION将自动限制为较慢的间隔,并且位置对象将被混淆以仅显示粗略的准确度。
  • 所有位置请求都被视为提示,您可能会收到比请求更准确/更不准确、更快/更慢的位置

有关更多详细说明,请阅读上面链接中的完整文档。

希望这个解释可以帮助你。