2010-07-12 60 views
2

我試圖尋找最佳供應商與下面這種情況:搜索Android應用程序的最佳供應商

// GPS 
    case R.id.main_menu_gps: 

     // Set up location services 
     mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     mBestProvider = mLocationManager.getBestProvider(new Criteria(), true); 
     Log.d(DEB_TAG, "@@@@Value of mBestProvider is " + mBestProvider); 

     if(mBestProvider != null){ 
      showGpsSearchingDialog(); 
      mLocationManager.requestLocationUpdates(mBestProvider, 150000, 1, this); 
     } else { 
      Log.d(DEB_TAG, "Provider is null"); 
      showGpsAlertDialog(); 
     } 

    break; 

我的設備返回「GPS」的最佳提供者,但無法找到一個位置,我的進度對話顯示永遠搜索。如果我進入「位置/安全」的電話設置並檢查「使用無線網絡」,最好的提供商是網絡,它可以返回一個位置。

我做錯了什麼時候最好的供應商是GPS和沒有數據返回?

回答

0

如果啓用GPS,它將始終將GPS作爲最佳提供商返回,因爲您指定了空標準。它可以採取適當的GPS修復延遲,如果你在一個建築物,你可能永遠不會得到修復。所以,如果網絡位置可以接受,那麼你應該只是做網絡。或者有一個超時,以便在某個時候你停止等待GPS,然後切換到網絡。如果您使用MapView,則可能需要使用MyLocationOverlay,因爲它的內部邏輯將爲您處理。

你的代碼看起來很好btw。

+0

再次感謝您......我沒有使用MapView,因此我將開始研究如何編碼下一部分。 :) – taraloca 2010-07-12 15:13:08

0

你真的沒有做錯任何事,只有某些技術可以通過GPS獲取位置。主要問題是GPS位置可能是最好的可用提供商(就精確度而言),但它可能無法獲得當前位置對網絡/結構性障礙的影響。沒有適當的邏輯來確定提供者試圖在沒有達到所需的準確度的情況下獲得位置的時間已經過去的時間量;您可能永遠不會通過GPS獲取位置信息,而必須使用不同的提供商或last known location作爲後備。

+0

你是正確的,我走到外面和GPS的工作原理。我知道我應該嘗試在代碼中寫入「計時器」,如果經過了一段時間,請嘗試另一個提供程序。你能指出我有哪些例子可以展示這樣的概念嗎? – taraloca 2010-07-12 15:01:34

+0

我忙於工作的ATM機,但儘快我會。 – 2010-07-12 15:21:17

+0

謝謝,我會稍後再回來查看。 – taraloca 2010-07-12 16:32:27

1
+0

我如何在我的「案例」聲明中使用它?我試圖找出如何調用它,允許在搜索時顯示對話框,然後返回當前位置結果。 – taraloca 2010-07-13 12:35:35

+0

這正是我的代碼所做的。您可以調用myLocation.getLocation()並顯示一些進度指示器。當回調被稱爲你已經得到的位置數據。 – Fedor 2010-07-13 13:49:19

+0

我感謝你,但我很難過。我會在我的答案中更新我的代碼,向您展示我正在嘗試的內容。如果任何人都可以讓我知道發生了什麼...很好。對不起,我正在努力學習和理解。 – taraloca 2010-07-13 15:36:44

相關問題