2012-10-16 9 views
8

Używam API Google i MapActivity, MapView etc ..
Kiedy muszę dostać moją aktualną lokalizację I użyć tego kodu po raz pierwszy:Czy powinienem używać Androida LocationManager.getBestProvider za każdym razem, gdy pytam o aktualizacje lokalizacji?

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); 
} 

Mam też „powrót do bieżącej lokalizacji przycisk "- gdy użytkownik przesunie mapę i chce szybko powrócić do swojej aktualnej pozycji.

Moje pytanie brzmi, należy użyć metody getBestProvider()każdym razem Chcę uzyskać informacje o lokalizacji?

mogłem uratować ostatniego dostawcy wybrany poniżej, ale warunki mogą się zmienić w każdej sekundzie:

  1. Użytkownik wyłączony GPS
  2. Brak sygnału GPS
  3. NETWORK_PROVIDER jest lepszy w obecnej sytuacji
  4. etc ..

Co to jest właściwe podejście?

+0

http://stackoverflow.com/questions/3145089/what-is-the-simplest-and-most-robust-way- to-get-the-users-current-location-in-a/3145655 # 3145655. Sprawdź link. Możesz znaleźć odpowiedzi na swoje pytania. – Raghunandan

+0

To nadal nie odpowiada na moje pytanie. Mój kod działa również. Ale czy powinienem, czy nie powinienem dzwonić do getBestProvider za każdym razem? Moim zdaniem tak .. –

+0

http://developer.android.com/guide/topics/location/strategies.html#BestEstimate. Prawdopodobnie powinieneś przejść przez ten link. – Raghunandan

Odpowiedz

0

Zawsze można tego użyć, ale należy sprawdzić na Location.getTime() -> to by powiedzieć, czas został ustalony, dzięki czemu można łatwo rozróżnić świeże i nieaktualne poprawki lokalizacji.

Powiązane problemy