2012-10-16 12 views
8

Ich verwende Google APIs und die MapActivity, MapView etc ..
Als ich mich diesen Code das erste Mal verwenden muß, um meinen aktuellen Standort zu erhalten:Soll ich jedesmal, wenn ich nach Standortaktualisierungen frage, den androiden LocationManager.getBestProvider verwenden?

myLocationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE); 
// Sets the criteria for a fine and low power provider 
Criteria crit = new Criteria(); 
crit.setAccuracy(Criteria.ACCURACY_FINE); 
crit.setPowerRequirement(Criteria.POWER_LOW);  
// Gets the best matched provider, and only if it's on 
String provider = myLocationManager.getBestProvider(crit, true); 
// If there are no location providers available 
if (provider == null){ 
    OnClickListener listener = new OnClickListener() { 

     public void onClick(DialogInterface dialog, int which) { 
      // Closes the activity 
      finish(); 
     } 
    }; 
    Utils.getInstance().showAlertDialog(this, R.string.warning_dialog_title, 
           R.string.no_location_providers_error_message, 
          android.R.drawable.ic_dialog_alert, false, listener); 
} 
// Location services is enabled 
else{ 
    myLocationListener = new MyLocationListener(); 
    myLocationManager.requestLocationUpdates(
      provider, 
      0, 
      0, 
      myLocationListener);   
    // TODO - put a marker in my location  
    GeoPoint currentGeoPoint = MapUtils.getInstance(). 
      getCurrentLocation(myLocationManager, provider);   
    // Center to the current location 
    centerLocation(currentGeoPoint, MAX_ZOOM); 
} 

Ich habe auch eine „zurück zu dem aktuellen Standort Taste "- wenn der Benutzer die Karte bewegt und schnell zu seinem aktuellen Standort zurückkehren möchte.

Meine Frage ist, sollte ich die getBestProvider() Methode jedes Mal Ich möchte Informationen erhalten Ort verwenden?

konnte ich den letzten gewählten Providers, aber die Bedingungen könnte jede Änderung Sekunde:

  1. Benutzer ausgeschaltet GPS
  2. Kein GPS-Signal
  3. NETWORK_PROVIDER in der aktuellen Situation besser ist
  4. etc ..

Was ist der richtige Ansatz?

+0

http://stackoverflow.com/questions/3145089/what-is-the-simplest-and-most-robust-way- to-get-the-users-aktueller-Standort-in-a/3145655 # 3145655. Überprüfen Sie den Link. Sie können Antworten auf Ihre Fragen finden. – Raghunandan

+0

Das beantwortet meine Frage immer noch nicht. Mein Code funktioniert auch. Aber sollte oder sollte ich den getBestProvider nicht jedes Mal aufrufen? Meiner Meinung nach ja .. –

+0

http://developer.android.com/guide/topics/location/strategies.html#BestEstimate. Sie sollten wahrscheinlich über diesen Link gehen. – Raghunandan

Antwort

0

Man kann immer diese verwenden, aber stellen Sie sicher, dass auf dem Location.getTime überprüfen() -> das würde Ihnen sagen, die Zeit war es repariert und so kann man leicht zwischen den frischen und veralteten Ortungen unterscheiden.