2013-01-12 52 views
2

我想獲得基於GPS或網絡的位置,但問題是,如果我根據GPS位置獲取位置詳細信息需要很多時間。因此,我想實施一種方法,如果GPS信號是非常低的訪問位置使用網絡提供商。我如何確定GPS信號?如果這有問題嗎?即使在開闊的天空中,GPS信號總是很低,因此它總是會到達網絡供應商?如果GPS無法獲取位置,切換到Android的網絡

我該如何解決這個問題?

回答

0

您是使用LocationManager.GetLastKnownLocation輪詢位置還是通過requestLocationUpdates異步獲取更新?

首先,使用GPS_PROVIDER查詢位置。如果它返回空值,則查詢NETWORK_PROVIDER

如果您收到通知,請同時請求。然後,您可以實現onStatusChanged以告知GPS何時可用,並且如果沒有,則忽略網絡更新,否則使用它們(位置對象告訴您提供者是什麼)。

+0

我正在使用requestLocationUpdates,但不是異步的。我在按鈕點擊內部調用它。像這樣: locationListener = new MyLocationListener(); locationMangaer.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,5,locationListener); 然後我打電話給聽衆。 私有類MyLocationListener實現LocationListener的{ 公共無效onLocationChanged(位置LOC){{ Toast.makeText(getBaseContext() 「位置變了:」 + loc.getLatitude()+ loc.getLongitude(),Toast.LENGTH_SHORT )。顯示(); } 我不知道我在哪裏檢查如何獲得GPS數據爲空然後ntw – TheAndroDev

+0

如果你打電話給它,它的asynehronous。 requestLocationUpdates會每隔一段時間調用一次監聽器,直到取消。所以如果沒有GPS同步,它將永遠不會被調用。您需要調用requestLocationUpdates兩次,一次用於NETWORK_PROVIDER,一次用於GPS_PROVIDER。然後,無論何時更新,都會被調用。如果最近有GPS更新,請忽略網絡更新。 –

+0

所以兩個聽衆:一個用於GPS和一個用於網絡,如果需要則忽略網絡更新:如何檢測GPS提供商是否已獲得或網絡提供商已獲得。我可以用計時器嗎? – TheAndroDev

0

添加lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,ll);它將開始使用網絡獲取gps。使用location.getProvider()你應該能夠區分以瞭解其GPS或網絡。

相關問題