2010-08-10 69 views
1

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

因此,如果我们只将位置提供程序设置为NETWORK_PROVIDER,那么它是没问题的,因此无论是否启用GPS_PROVIDER都无关紧要。

请让我知道什么是正确的方法。

问候

苏尼尔

回答

1

根据您的应用程序,您也许能够只使用网络位置。这对于许多基于位置的服务来说足够精细了。另外你不必担心用GPS收音机吸取用户的电池。

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

+0

getLastKnownLocation有时不返回经度和纬度。在某些情况下,它将返回null。这就是我使用提供者获取位置的方式的原因。对于我的应用程序,我不需要连续更新位置。它仅在某些特定事件中被提取。为此,我使用requestLocationUpdates,一旦我得到位置,我将删除侦听器。 – sunil 2010-08-11 13:07:43

+0

啊,在这种情况下,如果GPS在那段时间还没有降下,你将不得不实现一个超时并且只需要网络位置。这就是[这个SO问题]中的人们如何解决它的问题(http://stackoverflow.com/questions/2919358/android-get-location-from-best-provider-available)。 – 2010-08-11 13:26:39

0

GPS给出比网络服务提供更好的精度。

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

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

问候, 维奈