我正在创建一个应用程序,我已经完成了所有事情,直到我想出了这个。 我已经阅读了很多关于GPS和网络位置但我仍然有点困惑。 我的应用程序将每隔X分钟在后台自动启动(从0到120分钟,具体取决于用户)并将获得当前位置(我还不知道GPS或网络)。 我的目标是相对较好的电池,但我需要至少100米(350英尺)的精度任何5-100米精度的东西都是完美的。此外,如果无法提高精度,则丢弃测量值并等待另外X分钟。 有什么建议吗?
答案 0 :(得分: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 Location API的细节),用于计算位置的卫星数量可能是不精确但仍然有用的信息(小于3,放弃位置, 3很糟糕,超过4是平均,10是相当不错的。)
详细了解DOP here。 详细了解A-GPS here,以及GPS here。
当然,通过使用来自GSM网络或周围Wifi网络的信息,android可以在没有任何GPS信号的情况下找到您的设备,但是我无法告诉您如何知道您的位置有多精确。
答案 1 :(得分:0)
最简单的方法是使用Location.getAccuracy()
方法。在解释结果时,请参阅:How is location accuracy measured in Android?