我使用network provider
获取Android application
中的位置信息。有时我发现即使在我到达一个新的地方后,这个位置也不会改变。与此同时,我发现Google地图中的位置已更改。所以我退出并重新启动了我的应用程序,并且位置也没有改变。但经过很长一段时间,或者我重新启动手机,我可以看到新的位置。
有人知道是什么原因吗?我使用getLastKnownLocation()
来获取应用程序中的最新位置。
更新:
发生此问题时,我发现在未更改位置时更改了cellid和LAC。所以这很奇怪。我认为谷歌地图可能会使用cellid& LAC直接获取位置,因此可以获得正确的位置。
更新更新:
发生此问题时,我使用cellid和LAC通过来自Google服务器的HTTP POST请求获取位置。这个位置是正确的。
顺便说一句,我发现我的问题就像这个问题:Android network location takes hours to update location答案 0 :(得分:0)
我不相信getLastKnownLocation()
。根据我的经验,这是不可靠的。
您最好使用LocationManager.requestLocationUpdates()
请求位置回调。如果您只需要该位置,则可以在此之后使用LocationManager.removeUpdates()
取消注册回调。如果您的应用程序需要在位置更改时得到通知,那么您可以使用合理的最小时间和/或最小距离参数(基于您的应用程序所需的任何内容)注册回调。