2012-04-14 35 views
0

我已經編寫了下面的代碼來獲得最佳的提供者。如何在android中獲取LocationProvider的狀態

private static String provider; 

    public static String setCriteria(LocationManager locationManager) { 
     Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_FINE); 
     criteria.setAltitudeRequired(false); 
     criteria.setBearingRequired(false); 
     criteria.setCostAllowed(true); 
     criteria.setPowerRequirement(Criteria.POWER_MEDIUM); 
     provider = locationManager.getBestProvider(criteria, true); 
     LocationProvider locProvide = locationManager.getProvider(provider);   
     if (provider == null) { 
      provider = LocationManager.GPS_PROVIDER; 
     } 
     return provider; 
    } 

我有這段代碼找到提供商,我將用於獲取位置。現在我想檢查的是提供者的狀態。我從文檔中讀取LocationProvider有3個狀態可用,無法使用& TEMPORARILY_UNAVAILABLE。現在我請求位置監聽器之前,我需要檢查狀態。

如果狀態爲例如TEMPORARILY_UNAVAILABLE或不在服務中,則用戶將相應地獲得該消息,否則它將找到該位置。所以我的問題如何檢查狀態?

如果任何人有任何想法,請您幫我...

回答

0

您可以嘗試使用您的LocationManager對象requestlocationupdates和實現LocationListener的對象......這樣的..

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
LocationListener ll = new mylocationlistener(); 
lm.requestLocationUpdates(provider, 0, 0, ll); 

    private class mylocationlistener implements LocationListener { 
    .... 

    @Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    switch(status){ 
    case 0: 
    //OutofService 
    break; 
    case 1: 
    //Temporarily unavailable 
    break; 
    case 2: 
    //Available 
    break; 

    } 
} 
+0

感謝您的回覆,我會試試這個...... – Prem 2012-04-14 07:24:37

+0

它工作過嗎?或者還有什麼問題? – 5hssba 2012-04-14 08:56:46

+0

我試過你給出的代碼。我所做的只是敬酒信息,但沒有發生任何事情。你能告訴我什麼時候onStatusChanged會被觸發嗎? – Prem 2012-04-14 10:55:44

0

AFAIK ,對於上述問題,這是the ultimate solution ..沒有什麼可以超越這個 你可以告訴isAvailable或不使用布爾變量isGPSfix

雖然你可以做其他嘗試like this但這不是保證在所有情況下工作。

+0

好的..謝謝你的建議.... – Prem 2012-04-14 07:25:01