为什么Android在记住上次知道的位置时会遇到此类问题?


12

我一直无法弄清Android记住其上次已知位置的方式。如果似乎记得几小时前而不是几秒钟前的位置。我认为最好举一个例子说明我的意思。

我最近在湾区。我在Android上使用的是Google地图,而我恰好在山景城的Google校园附近。我使用的是启用了GPS的地图,过了一会儿,我得到了一个正确的GPS锁,我曾经用它锁定了该区域。

后来当我回到旧金山时,我正用它来逛遍整个城市。每次打开地图时,它都会使我的位置回到山景城。在获得GPS锁定后大约10秒钟,我得到了我的真实位置。如果几秒钟后我关闭手机并重新打开,则发生了同样的事情-它认为我在几个小时之前的某个地方,然后进入了我的实际位置。这种情况一直在发生-记住我几个小时前的位置,而不是我刚才的位置。一旦我在某个区域周围停留了一定的时间,它便成为新的“最后知道的位置”。

为什么一旦我获得了准确的GPS锁定,Android为何不将其注册为“最近的已知位置”而不是以前的那个?

Answers:


3

不是完整的答案,而是一些背景信息:

  • 您的设备可以具有多个位置提供商,例如,一个基于GPS的位置提供商和一个基于其可以看到的手机塔的位置提供商。
  • Android没有最后一个已知位置。每个位置提供者都有其自己的最后已知职位。
  • 位置具有其他指标,例如准确性,记录时间,记录内容(例如,它是否具有海拔成分等)

因此,它取决于应用程序使用的位置提供商,并且可以取决于甚至基于动态参数进行更改。例如,在启动时,它可能会要求Android寻求最快的位置提供商,然后切换到最准确的位置提供商以逐步获得更好的修复。


这是一个非常好的,简洁的解释。谢谢。
尼克·迪克森

这也很有意义,因为当我回到城市时,我没有wifi /移动数据。在Google校园里有wifi。因此,地图最初必须一直使用“粗略”(即wifi)lastknownlocation(在Google中),然后在几秒钟后GPS启动时进行更新。我本来会以为GPS lasknownlocation会更新颖/更好。
蒂姆(Tim)

这个答案更像是一条评论。如果粗略位置的优先级较低,它将无法解释为什么手机稍后会返回mnt视图。
gcb

2

据我了解,Android使用粗略和细粒度类型的位置更新,并且这些更新也可以具有不同的质量指标。可能是Google Maps应用程序在您的新位置没有足够长的GPS和Wifi信号,无法提供足够高的质量来成为最后知道的位置。

http://developer.android.com/guide/topics/location/obtaining-user-location.html上的开发人员文档提供了一些用于获取用户位置的示例模型,这些模型可能会对它的工作方式有所了解。但我猜想Google Maps以及其他地图可能会做自己的事情。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.