为啥 FusedLocationProviderApi 从不报告精度优于 10m?这有记录吗?

Posted

技术标签:

【中文标题】为啥 FusedLocationProviderApi 从不报告精度优于 10m?这有记录吗?【英文标题】:Why does FusedLocationProviderApi never report accuracy better than 10m? Is this documented?为什么 FusedLocationProviderApi 从不报告精度优于 10m?这有记录吗? 【发布时间】:2018-08-23 15:49:18 【问题描述】:

直接使用LocationManager 的数据收集应用已更新为使用FusedLocationProviderApi。使用LocationManager,大多数设备在收集位置时可以快速报告 5m 或更好的精度。使用FusedLocationProviderApi,有史以来报告的最佳精度为 10m。

我刚刚安装了一个位置演示应用程序并看到了相同的行为 (https://github.com/will-quast/android-location-demo)。在 Fused Location 活动中,如果我只显示 GPS 位置,精度会随着我获得更好的天空视野而改变,它可以下降到 2m。如果我只显示融合,我会得到与LocationManager 报告的相同点。这是有道理的——我将 Android 设置为仅将 GPS 用于定位,优先级设置为PRIORITY_HIGH_ACCURACY,所以我希望这两点始终相同。但是使用融合的提供者显示的最佳精度是 10m。

为什么融合的提供者从不报告小于 10m 的精度?这是否记录在某处?有什么办法可以绕过它,还是应该在需要精确感时始终使用LocationManager

FusedLocationProviderClient 目前不是一个选项,因为它需要对 Google Play 进行更新,并且此应用程序用于 Google Play 更新过大的资源受限区域。 知道它是否确实报告了低于 10m 的精度仍然很有用。它也永远不会报告低于 10m 的精度,而 Android 设置设置为仅使用 GPS。

编辑 4/9 - 相关问题:

Dramatic shift in location accuracy distribution starting February 15 Wierd and very unexpected issue with location.getAccuracy() FusedLocationApi Performance Issue: Accuracy seems capped at 10.0 meters Cordova geolocation accuracy gets capped at 10 meters

【问题讨论】:

如果你不介意可以添加一些代码吗? @G.Dator 见github.com/will-quast/android-location-demo/blob/master/…和github.com/opendatakit/collect/blob/… @Hélène Martin:你得到了什么准确度? @jiteshmohite 使用FusedLocationProviderAPI 我得到了 10m 的精度。使用LocationManager,我得到了 2m 的精度。 我在这里回答了类似的问题***.com/questions/49348489/… 【参考方案1】:

没有。只有尽力而为。不保证。

如果您拥有良好的设备,并且位于拥有大量 Android 用户的位置。 (例如SSID数据库会变得更准确),它可以达到2-3m的精度。

否则,混合不同来源的位置信息会产生较大的方差,从而导致准确性较低。

例如 源 A 精度为 5m。 B源精度为15m。

单独使用 Source A 当然精度是 5m。 但是如果混合A和B,精度当然会>= 5m。 (考虑为干净的数据添加噪声)

【讨论】:

谢谢,这确实有些道理,尽管令人惊讶的是,鉴于高精度源它仍然混合,尤其是当 Android 设置说只使用 GPS 时。当设备设置为仅使用 GPS 时,10m 的限制似乎很难。你知道为什么吗?我找不到FusedLocationProviderApi的来源,有吗? 即使 A 和 B 的准确率相同,如果 A 和 B 告诉你的结果不同怎么办?它会给你一个较低准确度的答案。 (可能以 A 和 B 的平均值为中心的较大半径)您是否尝试关闭 wifi 并移除 sim 卡? Google Play 服务不是开源的。 你说得对,如果有两个来源可用,那么行为是有意义的。如果 Android 设置仅设置为 GPS,我希望它使用唯一的来源!关闭 wifi 并忽略 SIM 卡会导致相同的行为(在 10m 精度下硬停止)。我没有意识到 Play Services 不是开源的,谢谢。 我们遇到了同样的问题,请参阅***.com/questions/49348489/…【参考方案2】:

这已被确认为 Google Play 服务错误on the Google issue tracker。预计 Play Services 13.4.0 的修复程序允许精度低至 3m。目前尚不清楚为什么它会被限制在 3m,而不是使用原始位置源报告的精度。

【讨论】:

以上是关于为啥 FusedLocationProviderApi 从不报告精度优于 10m?这有记录吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥或为啥不在 C++ 中使用 memset? [关闭]

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?