【问题标题】:GPS and network location androidGPS和网络位置android
【发布时间】:2012-12-18 19:59:11
【问题描述】:

我正在创建一个应用程序,在我想出这个之前,我已经完成了所有工作。 我已经阅读了很多关于 GPS 和网络位置的信息,但我仍然有点困惑。 我的应用程序将每隔 X 分钟在后台启动一次(从 0 到 120 分钟,具体取决于用户),并将获取当前位置(我仍然不知道是 GPS 还是网络)。 我的目标是获得相对较好的电池,但我需要至少 100 米(350 英尺)的精度,任何 5-100 米的精度都是完美的。此外,如果无法提高精度,则放弃测量并再等待 X 分钟。 有什么建议吗?

【问题讨论】:

    标签: java android networking gps location


    【解决方案1】:

    查找 GPS 定位的 DOP(精度稀释)值:它会根据用于计算位置的 GPS 卫星的数量告诉您位置的精确度。顺便说一句,用于计算位置的卫星数量很重要。

    因此,一旦您的应用程序启动,轮询 GPS 以获取位置,直到 DOP 值低于给定阈值(3.0 的 DOP 非常精确,大约 20 米)。如果您在指定的时间内没有得到这样的值,则使用您收到的最佳位置。

    现在几乎所有的 GPS 芯片都使用 A-GPS,尤其是在 Android 上,因此您可以很快得到修复(不到 30 秒)。如果您的 A-GPS 信息已过期(通过 Internet 连接下载 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。

    当然,android 可以通过使用来自 GSM 网络或周围 Wifi 网络的信息在没有任何 GPS 信号的情况下定位您的设备,但是我无法告诉您如何知道您的位置有多精确。

    【讨论】:

    • 非常感谢!我会检查一下,看看它是如何为我工作的!
    • DOP 不能通过直接 Android Location API 方法调用作为标准化字段使用。如果您可以在 Android 手机上获得 DOP,那将是通过注册 NMEA 侦听器 - goo.gl/EmIoD 。并希望 OEM 将 DOP 作为 NMEA 语句的一部分输出。这最初是作为一种传统方法实现的,以帮助将较旧的 GPS 应用程序移植到早期版本的 Android,因此我很想知道现代 Android 设备上是否仍提供完整的 NMEA 输出。
    【解决方案2】:

    最简单的方法是使用Location.getAccuracy() 方法。在解释结果时,请参阅:How is location accuracy measured in Android?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      相关资源
      最近更新 更多