2011-08-11 129 views
1

在我的應用程序中,我設置了精確度和粗略度的兩個提供程序來偵聽位置更新。我明白,使用罰款的位置將由全球定位系統提供,並使用粗略的位置將由網絡提供商提供(從此鏈接http://www.alonsoruibal.com/using-two-locationproviders-on-android/)。現在,如果gps被禁用,我希望我的應用切換到網絡,並啓用gps切換回。這可以使用onStatusChanged方法來完成嗎? 我的問題是,這段代碼好嗎?gps和網絡提供商之間的切換

public static final int OUT_OF_SERVICE = 0; 
public static final int TEMPORARILY_UNAVAILABLE = 1; 
public static final int AVAILABLE = 2; 

Criteria criteria = new Criteria(); 
criteria.setAltitudeRequired(false); 
criteria.setBearingRequired(false); 
criteria.setCostAllowed(false); 
criteria.setPowerRequirement(Criteria.POWER_LOW); 
criteria.setAccuracy(Criteria.ACCURACY_FINE); 
providerFine = locationManager.getBestProvider(criteria, true); 
criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
providerCoarse = locationManager.getBestProvider(criteria, true); 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    if (provider.equals(providerFine)) { 
     if (status == 0) { 
      locationManager.requestLocationUpdates(providerCoarse, 60000,20,this); 
     } 
     if (status == 2) { 
      locationManager.requestLocationUpdates(providerFine, 60000, 20, this); 
     } 
    }// provider == fine 
} 

還有,如果更新已經申請,再次(在什麼地方在我的代碼,我沒有把這裏)(適用於供應商),這將是確定的,如果我要求他們在這個onStatusChanged方法。或者我必須先刪除更新?

回答

0

對我來說看起來很好。我建議在添加之前刪除任何更新偵聽器。保持清潔和一致。

+0

好的,謝謝你,我在想這件事。謝謝 – Sandra

+0

@Sandra可以請你確認切換工作正常,我正在嘗試實現類似的任務。 – Lenin

相關問題