【问题标题】:FusedLocationProviderClient returns inaccurate locationsFusedLocationProviderClient 返回不准确的位置
【发布时间】:2019-06-03 06:18:40
【问题描述】:

我正在使用 Google 的 fusedlocationproviderclient 使用前台服务在 android 上实时跟踪用户的位置。 我注意到有时 fusedlocationproviderclient 连续多次返回相同的位置。 截至目前我观察到,有时 fusedlocationproviderclient 返回非常不准确的位置 (大约 700m)

之前我曾经使用 Location_Services 跟踪位置,但为了减少电池消耗,我改用了 fusedlocationproviderclient。 我已将 fusedlocationproviderclient 优先级设置为高精度。 我已将 minDisplacement 设置为 100m。

这是我的位置对象

private void createLocationRequest() {
    mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(10000);
    mLocationRequest.setFastestInterval(10000);
    mLocationRequest.setSmallestDisplacement(100);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

我希望它应该返回准确的位置。 当我在静态地图上显示跟踪位置时,由于位置不正确,地图中会出现一条直线。

【问题讨论】:

  • 我刚刚开始使用 FusedLocationProviderClient 走这条路。但似乎如果您想要更准确的结果,请使用您的 LocationRequest 设置。创建一个允许您动态更改这些设置的测试应用程序。我发现在前台应用程序中,Interval=1000 和 FastestInterval=500 会产生最好的结果。也最小位移约20m。在任何一种情况下,无论出于何种原因,更改这些参数都会更改回调中返回的位置的准确性。

标签: android google-api location android-location fusedlocationproviderclient


【解决方案1】:

我会检查您在清单中设置的位置权限类型。

您有 2 个可用:

ACCESS_COARSE_LOCATION - 这将允许您访问大概位置

ACCESS_FINE_LOCATION - 这个可以让你访问一个精确的位置,我相信这是你想要的。

【讨论】:

  • 是的,我确实拥有清单文件中添加的两个权限。
  • 您是否尝试过删除 ACCESS_COARSE_LOCATION?无需同时添加两者,如果您希望您的位置尽可能精确,我只会添加 ACCESS_FINE_LOCATION。
猜你喜欢
  • 2019-08-19
  • 2023-01-17
  • 2021-04-04
  • 1970-01-01
  • 2018-11-08
  • 2017-12-10
  • 1970-01-01
  • 2018-04-25
  • 2016-10-19
相关资源
最近更新 更多