【发布时间】:2011-10-06 20:19:24
【问题描述】:
我正在尝试获取当前位置。为此,我实现了一个 LocationListener 并为网络和 GPS 提供商注册它:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
然后我阻塞 30 秒并使用第一个位置传递到侦听器的位置
onLocationChanged()
精度为 100 米或更高的方法。
大多数时候这都很好。如果手机连接到某个 Wifi 网络,则只需一秒钟即可获得准确度约为 50 米的正确位置。如果没有 Wifi 但启用了 GPS,当然可能需要一段时间才能获得位置。
但有时,当连接到 Wifi 并获取当前位置时,会提供一些旧的(缓存的?)以前的“Wifi”位置 - 它可能是 15 分钟前的位置,距离当前位置 15 公里。 问题是,
location.getTime()
返回当前时间 - 所以不可能知道这个位置是旧的。
我想我必须实现一个更复杂的解决方案 - 我只想知道为什么这些旧的“Wifi”位置有一个当前时间戳,而不是最初检索时的时间戳。
【问题讨论】:
-
这不是一个真正的答案,但我只是想向您确认这至少在 API8 之前一直发生,而且我也遇到了同样的问题。正如有人在其中一个答案中所做的那样,我为 wifi 位置实施了一个简单的“噪声过滤器”,我在其中查看是否可能发生了行进距离,但这并不完美..
-
我也有同样的问题。你必须解决它?