我创建了一个应用程序,我做了一切都没有问题,直到我想出了这个。 我已经阅读了很多GPS和网络位置,但仍然有点困惑。 我的应用程序每隔X分钟(从0到120分钟取决于用户)将在后台自动启动,并将获得当前位置(我还不知道GPS或网络)。 我的目标是相对较好的电池,但我需要至少100米(350英尺)的精度。5-100米精度的任何精度都是完美的。另外,如果精度无法提高,则放弃测量并等待另外的X分钟。 有什么建议吗?全球定位系统和网络位置android
回答
寻找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信号,但我不能告诉你如何知道你的位置是多么精确。
最简单的事情就是使用Location.getAccuracy()
方法。解释结果见:How is location accuracy measured in Android?
- 1. 了解Android的全球定位系统和网络检测位置
- 2. Android的全球定位系统和网络提供商
- 3. 全球Android网络/ WIFI位置
- 4. android nmea全球定位系统
- 5. Android - 全球定位系统的位置更改距离
- 6. 位置服务全球定位系统,设置高优先级
- 7. 全球定位系统谷歌地图定位器V2.0的Android
- 8. Android的全球定位系统路由系统
- 9. Android的全球定位系统的AsyncTask和ProgressDialog不确定
- 10. 全球定位系统位置服务不适用于iOS 8
- 11. 全球定位系统坐标转换
- 12. 全球定位系统追踪问题
- 13. j2me中的全球定位系统
- 14. 全球定位系统在Windows Mobile
- 15. OpenGEO全球定位系统问题
- 16. 自动开启全球定位系统
- 17. Android:全球定位系统和处理器
- 18. Android的全球定位系统 - 让纬度和经度
- 19. 全球定位系统,GeoCoding导致应用程序挂在android
- 20. 全球定位系统设备和编程
- 21. 全球定位系统,传感器和唤醒
- 22. 统一全球定位系统运动数据
- 23. 全球布局和定位
- 24. QStandardItem全球位置
- 25. 全球定位系统没有得到禁用和再次启用Android PhonePhone
- 26. Android MediaPlayer网络位置
- 27. 位置和谷歌android系统
- 28. 全球定位系统数据时间距离基地转换
- 29. 全球定位系统不在大楼内工作
- 30. 基于全球定位系统的iPhone应用程序
非常感谢!我会检查这个,看看它是如何为我工作的! –
通过直接的Android位置API方法调用,DOP不可用作标准化字段。如果您可以在Android手机上获得DOP,则可以通过注册NMEA监听器 - http://goo.gl/EmIoD。并希望OEM正在输出DOP作为NMEA句子的一部分。这最初是作为传统方法实现的,以帮助老版本的GPS应用移植到早期版本的Android,所以我很好奇,看看现代Android设备是否仍然提供完整的NMEA输出。 –