2012-12-18 75 views
1

我创建了一个应用程序,我做了一切都没有问题,直到我想出了这个。 我已经阅读了很多GPS和网络位置,但仍然有点困惑。 我的应用程序每隔X分钟(从0到120分钟取决于用户)将在后台自动启动,并将获得当前位置(我还不知道GPS或网络)。 我的目标是相对较好的电池,但我需要至少100米(350英尺)的精度。5-100米精度的任何精度都是完美的。另外,如果精度无法提高,则放弃测量并等待另外的X分钟。 有什么建议吗?全球定位系统和网络位置android

回答

1

寻找GPS定位的DOP(精度稀释)值:根据用于计算位置的GPS卫星的数量,它会告诉您定位的精确程度。顺便说一下,用来计算位置的卫星数量很重要。因此,一旦你的应用程序启动,轮询GPS的位置,直到DOP值低于给定的阈值(DOP 3.0非常精确,大约20米)。如果您没有在指定的时间内获得这样的价值,那么请使用您收到的最佳位置。

几乎所有的GPS芯片现在都在使用A-GPS,特别是在android上,所以你很快就会修复(30秒以内)。如果您的A-GPS信息过期(A-GPS文件通过互联网连接下载),则您的第一次修复需要更长的时间:当GPS不知道它在哪里时,可能需要6分钟才能获得可用修复位于。

为了尽量减少电池使用量:等待第一次修复。如果在6分钟内没有解决问题,请关闭应用程序,因为您没有任何位置。一旦你有第一次修复,轮询GPS 2或3分钟。如果DOP低于阈值(3.0是一个很好的猜测,但为自己尝试),请停止轮询。如果DOP不低于阈值,则使用DOP最低的位置。

请注意,您等待的时间越长,修正的精度越好,DOP取决于所有可见卫星的位置,有时候没有足够的可见卫星或者它们没有最佳放置以获得精确的位置。

如果DOP不可用(我不知道Android位置API的细节),用于计算位置的卫星数量可能是一个不准确但仍然有用的信息(小于3,放弃位置,3是可怕的,4以上是平均的,10是相当不错的)。

阅读更多关于DOP here。 了解更多关于A-GPS here以及关于GPS的一般信息here

当然,android能够通过使用来自GSM网络或周围的Wifi网络的信息找到您的设备没有任何GPS信号,但我不能告诉你如何知道你的位置是多么精确。

+0

非常感谢!我会检查这个,看看它是如何为我工作的! –

+2

通过直接的Android位置API方法调用,DOP不可用作标准化字段。如果您可以在Android手机上获得DOP,则可以通过注册NMEA监听器 - http://goo.gl/EmIoD。并希望OEM正在输出DOP作为NMEA句子的一部分。这最初是作为传统方法实现的,以帮助老版本的GPS应用移植到早期版本的Android,所以我很好奇,看看现代Android设备是否仍然提供完整的NMEA输出。 –