2011-08-11 4 views
1

私のアプリでは、両方のプロバイダをきめ細かく正確に設定して、場所の更新を待ち受けました。私は、細かい位置を使用してGPSによって提供されることを理解し、粗いを使用してネットワークプロバイダ(このリンクhttp://www.alonsoruibal.com/using-two-locationproviders-on-android/)から場所が提供されます。今、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方法でそれらを再び要求した場合、それはOKだろう。または、私は最初に更新を削除する必要がありますか?

答えて

0

私はうまく見えます。私はもう追加する前に更新リスナーを削除することをお勧めします。清潔で一貫性を保つため。

+0

ありがとう、ありがとう、私はそれについて不思議だった。ありがとう – Sandra

+0

@Sandraあなたは、スイッチングが正常に動作していることを確認してください、私は同様のタスクを達成しようとしています。 – Lenin

関連する問題