【问题标题】:Location Providers in Android?Android 中的位置提供程序?
【发布时间】:2010-08-10 11:58:17
【问题描述】:

我的应用程序需要用户的当前位置。为此,我已经实现了代码,并且能够获取当前位置。该代码首先尝试获取最佳提供商,然后获取位置信息。问题是如果 GPS_PROVIDER 被禁用,则从 NETWORK_PROVIDER 返回当前位置。如果 NETWORK_PROVIDER 和 GPS_PROVIDER 都启用了,那么最好的提供者将是 GPS_PROVIDER,这会花费太多时间来获取当前位置。

那么,如果我们只将位置提供者设置为 NETWORK_PROVIDER,这样是否启用 GPS_PROVIDER 就无关紧要了。

请告诉我什么是正确的方法。

问候

苏尼尔

【问题讨论】:

    标签: android location location-provider


    【解决方案1】:

    根据您的应用程序,您可能只能使用网络位置。这对于许多基于位置的服务来说已经足够细了。此外,您不必担心 GPS 无线电会耗尽用户的电池电量。

    但是,如果您真的想要尽可能准确的位置,为什么不听这两个提供商的意见呢?您可以使用getLastKnownLocation() 方法作为初始位置。然后您可以使用NETWORK_PROVIDER 位置。然后,一旦您从 GPS_PROVIDER 获得修复,您就可以忽略或删除网络侦听器。

    【讨论】:

    • getLastKnownLocation 有时不返回纬度和经度。在某些情况下,它会返回 null。这就是我使用提供者方式获取位置的原因。对于我的应用程序,我不需要不断更新位置。它仅在某些特定事件上获取。为此,我使用 requestLocationUpdates 并在获得位置后删除侦听器。
    • 啊,在这种情况下,如果 GPS 在那段时间内没有关闭,您将不得不实施超时并获取网络位置。 this SO question 的人就是这样解决的。
    【解决方案2】:

    GPS 比网络提供商提供更好的精度。

    网络提供商是使用蜂窝塔和 wifi 的三角测量来完成的。

    因此,如果您立即需要,请从“最后一个已知位置”开始,然后切换到网络,一旦您从 gps 获得修复,就开始使用它。

    问候, 维奈

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 2016-05-13
      • 2013-08-02
      • 2012-03-24
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多