2010-08-10 51 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獲得修復,就開始使用它。

問候, 維奈

相關問題