Android-需要很长时间才能获得GPS信号。如何实现一个好的GPS提供商?

Android-需要很长时间才能获得GPS信号。如何实现一个好的GPS提供商?,android,gps,location-provider,Android,Gps,Location Provider,我写了一个应用程序,在慢跑时跟踪gps位置。不幸的是,该应用程序需要一些时间才能获得gps信号。当我打开谷歌地图等其他应用程序时,他们马上就能得到这个位置 我的问题是:如何实现gps提供商,以便应用程序尽可能快地获得信号 一个想法是,用应用程序启动一项服务,让提供商做一些准备工作。但跟踪活动不是主要活动。如何在尚未启动服务的活动中绑定服务?这是个好主意吗 谢谢阅读-我希望我的英语可以理解 马提尼酒您是否首先检查是否有您可以使用的最后一个已知位置?大多数应用程序首先检查GPS,然后搜索位置。正如我

我写了一个应用程序,在慢跑时跟踪gps位置。不幸的是,该应用程序需要一些时间才能获得gps信号。当我打开谷歌地图等其他应用程序时,他们马上就能得到这个位置

我的问题是:如何实现gps提供商,以便应用程序尽可能快地获得信号

一个想法是,用应用程序启动一项服务,让提供商做一些准备工作。但跟踪活动不是主要活动。如何在尚未启动服务的活动中绑定服务?这是个好主意吗

谢谢阅读-我希望我的英语可以理解


马提尼酒

您是否首先检查是否有您可以使用的最后一个已知位置?大多数应用程序首先检查GPS,然后搜索位置。

正如我在评论中提到的,GPS启动不是一个即时过程。接收机基本上必须知道每个GPS卫星在星座中的位置,以便计算其位置。星历数据描述了卫星相对于接收卫星的位置,并在GPS打开时从卫星上下载(我几乎忘了提到历书数据,它也是下载的一部分,描述了卫星的轨道)。从多个卫星下载和使用最后一个已知的位置可以帮助加速这个初始过程,但你不能让它“即时”

还有其他一些策略可以用来帮助加快定位过程,尤其是在手机中。除了最后已知的位置外,当GPS仍在采集过程中时,还可以使用诸如Cell Tower+定时定位(ECID)或Wi-Fi定位之类的东西来代替GPS

本文介绍了如何在android中定位手机的一些想法,但其不足之处在于:

  • 检查最后一个已知位置(如果位置太旧则丢弃)
  • 检查E-CID位置(这非常快,但非常粗糙 位置)
  • 检查Wi-Fi位置(这可能非常准确,但需要打开WiFi,有时可能会出现大量错误)
  • 最终获得GPS位置

现在,我正在检查最后一个已知位置。该活动快速显示位置。非常感谢!马提尼酒。但它仍然需要一些时间来获得新的位置。当服务由上一个(主要)活动启动时,有人知道如何使用该服务吗?因此,服务可以在需要位置之前等待位置更新?需要多长时间?1分钟?5分钟?通常,GPS冷启动的TTFF(首次定位时间)一般可长达15分钟,因为下载星历数据需要一段时间。在大多数情况下,“一段时间”意味着1-2分钟。但有时“某段时间”意味着等待>5分钟。冷启动意味着:只打开gps(手机可能整天都在运行)或打开手机?我指的是普通gps,我不太熟悉android实现,但冷启动通常意味着最后一个已知位置不可用时。当GPS第一次打开且最后知道的位置已知时(这有助于加快卫星捕获),将是一个热启动。感谢您的回答和链接。我将尝试使用描述的流模型来获取位置。你的解释有助于我理解背后的问题:获取gps信号和准确位置是我必须定义/实施的过程。我想问题已经解决了。现在,我将遵循TIPP,尝试在我的应用程序中实现一种正确的方式来处理gps主题。[马提尼酒]