5

当移动很远的距离时,比如去另一个城市,在 GPS 关闭的情况下,打开 GPS 需要很长时间才能获得第一个正确的点。

因此,例如,如果我注册到 gps 提供商,则可能需要长达 10 分钟才能完成第一次 onLocationChanged 调用。

网络提供商的响应速度更快,但准确性较低。

有没有办法帮助gps提供商?给它一个大概的位置(来自网络提供商的那个),以便它可以更快地找到我的位置?

我认为谷歌地图做了某种优化,因为他们的应用程序比我的基本应用程序更快地找到我的位置,只注册到 gps 提供商。

知道如何以不错的精度(<30 m)加速获取我的位置的过程吗?

4

3 回答 3

3

你是对的,如果你在手机关机的情况下移动很长一段路,那么卫星定位可能需要很长时间。这就是 AGPS 提供帮助的地方。“A”代表“辅助”,它的实现在很大程度上取决于运营商和手机。从本质上讲,它从手机信号塔或咖啡店等公共 WiFi 获取大致位置,然后下载星历和年历数据,这些数据告诉手机当时可能在该大致位置的头顶上有哪些卫星。然后手机可以首先开始收听与可见卫星相对应的频率。这应该加快第一次修复的时间。

于 2013-03-14T13:24:19.143 回答
1

常见的做法是使用 WiFi SSID 或您注册的手机信号塔的位置,通过 WeFi 或 Skyhook 等提供商查找您当前的位置。谷歌为此使用了自己的服务(并且看到没有其他人这样做)。

如果您的智能手机有气压计,另一种方法是查看气压并尝试将其固定到某个位置。虽然所有这些方法理论上都可以离线使用,但从互联网上获取数据更容易。

另请注意,手机上不准确的 NTP 设置可能会导致 GPS 搜索时间延长。

于 2013-03-14T13:24:10.423 回答
0

有没有办法帮助gps提供商?

NickT 已经回答了这个问题,但安卓手机必须调用 AGPS。在您的应用程序中,您无法控制它。

我认为谷歌地图做了某种优化,因为他们的应用程序比我的基本应用程序更快地找到我的位置,只注册到 gps 提供商。

这不应该是这样,可能你做错了什么,或者谷歌应用程序可以启用辅助 GPS。尝试与其他安卓 GPS 应用程序进行比较(例如与 Motion-X-GPS 进行比较)

第一次 onLocationChanged 调用可能需要 10 分钟。

通常这太长了,要么您的手机已知 GPS 质量较弱,要么设备没有自由视野以打开天空。即使没有辅助 GPS,在 45 秒后,您应该有一个有效的 GPS 位置(假设可以自由查看开阔的天空)。但是这种情况可能会发生,无论是您第一次在设备上使用 GPS 时,还是当您乘飞机飞往距离您最后一个 GPS 位置较远的位置时。

在我的 iPhone 上,当另一个 GPS 应用程序以某种方式令人不安时,我很少看到这种情况,在重新启动设备后 GPS 立即有效。

再次检查是否是您的应用程序的故障,通过比较其他应用程序是否也需要 10 分钟。(这可能是您的错,当您等待接收精度 <30m 而其他应用程序会占据他们获得的第一个有效位置时。

如果 google 也需要 10 分钟,那么您在该手机上无能为力,只能将其暴露在良好的天空视野中。
(在城市峡谷内,更难获得有效的第一次修复,然后在大地方。

于 2013-03-14T18:30:17.230 回答