安卓GPS校准

5

当移动到另一个城市等较远距离时,如果 GPS 关闭的话,打开之后很长一段时间它都不能得到正确的位置信息。

举个例子,如果我注册了 GPS 服务提供商,第一个 onLocationChanged 回调可能需要最多 10 分钟。

网络服务提供商会响应更快,但精度较低。

有没有办法帮助 GPS 提供商?比如给它提供一个大致位置(从网络服务提供商那里获取),这样它就能更快地找到我的位置呢?

我认为 Google 地图进行了某种优化,因为他们的应用程序比我的基本应用程序更快地找到我的位置,而我只是注册了 GPS 服务提供商。

有什么方法可以加快获取我的位置并保证其准确性(<30 米)吗?


这将需要每个卫星的外部星历数据源(以及将它们提供给软件的接口)。恐怕我不知道 Android 的具体细节。 - Aki Suihkonen
你的设备是否具有A-GPS功能?这听起来就像是你正在寻找的:使用网络/粗略位置来帮助GPS更快地锁定。 - Geobits
3个回答

3
你说得没错,如果你关闭手机并移动一段长距离,那么获取卫星信号可能需要很长时间。这就是AGPS的作用。'A'代表'辅助',它在运营商和手机制造商的实现上有很大差别。基本上,它从基站或公共WiFi(如咖啡店)获取大致位置,然后下载星历和卫星轨道数据,告诉手机哪些卫星可能在该位置上空。手机可以首先监听对应于可见卫星的频率。这应该会加快首次定位的时间。

1
常见的做法是使用WiFi SSID或您所注册的基站位置来通过WeFi或Skyhook等提供程序查找您的当前位置。谷歌使用自己的服务进行此操作(并且看到其他人没有这样做)。
另一种方法是,在您的智能手机具有气压计的情况下,查找空气压力并尝试将其固定到一个位置。虽然所有这些方法理论上都可以离线使用,但从互联网获取数据更容易。
还请注意,手机上不准确的NTP设置可能会导致更长的GPS搜索时间。

0
有没有办法帮助GPS提供者?NickT已经回答了这个问题,但是安卓手机必须调用AGPS。在您的应用程序中,您无法控制它。
我认为谷歌地图进行了某种优化,因为他们的应用程序比我的基本应用程序更快地找到了我的位置,而我的应用程序只是向GPS提供者注册。这不应该是这样的,可能是您做错了什么,或者谷歌应用程序可以启用辅助GPS。尝试与其他安卓GPS应用程序进行比较(例如与Motion-X-GPS进行比较)。
第一次onLocationChanged调用可能需要长达10分钟。通常情况下,这太长了,要么是您的手机已知具有较弱的GPS质量,要么是设备没有自由视野到开放天空。即使没有辅助GPS,在45秒后,您也应该拥有有效的GPS位置(假设有自由视野到开放天空)。但是这种情况可能会发生,要么是您第一次在设备上使用GPS,要么是当您乘飞机飞往远离您上次GPS位置的位置时。

在我的iPhone上,我很少看到另一个GPS应用程序会干扰的情况,在设备重新启动后,GPS立即有效。

再次检查是否是您的应用程序的问题,通过比较其他应用程序是否也需要10分钟。 (如果您等待接收精度<30m,而其他应用程序将获取第一个有效位置,则可能是您的问题。

如果谷歌也需要10分钟,那么您在该手机上无法做任何事情,除了将其暴露在良好的天空视野下。
(在城市峡谷内获得有效的第一个修复比在大场所更困难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接