2012-04-06 75 views
0

我希望我的LocationManager先嚐試獲取Fine_Location,然後如果不可用,請獲取Coarse_Location。可以爲Criteria Accuracy屬性設置這種類型的層次結構嗎?LocationManager GetBestProvider標準

const string context = LocationService; 
LocationManager locationManager = (LocationManager)GetSystemService(context); 
Criteria criteria = new Criteria() { Accuracy = Accuracy.Fine | Accuracy.Coarse }; 
string provider = locationManager.GetBestProvider(criteria, true); 

回答

0

從該GetBestProvider()方法的文檔摘自:

返回最符合給定條件的供應商的名稱。 只有被允許通過調用 活動訪問的提供商纔會被退回。 如果有多個提供者符合標準,則返回 ,其中準確度最高。

這聽起來像你正在尋找的行爲。

+0

我道歉,如果我還不清楚註冊。當我將Accuracy設置爲Fine時,但在室內有網絡覆蓋但沒有GPS覆蓋時,位置將返回null。但是當我將其設置爲課程時,它會返回基於網絡覆蓋的值。我希望位置儘可能準確,但如果它無法獲取GPS信號,我不希望它返回空值。 – jmease 2012-04-06 16:31:25

0

我想要的位置,以儘可能準確的,但我不希望它返回null如果它無法獲得GPS信號

然後,你必須需要爲提供者註冊 - provider = LocationManager.GetBestProvider(criteria, true);將返回最佳可用提供程序 - 它不會檢查此提供程序是否確實可以獲得修復程序。見herehere與兩個供應商