Ho semplicemente bisogno di ottenere la posizione dell'utente. Preferibilmente la posizione esatta, ma se non è possibile, una posizione approssimativa andrebbe bene.LocationManager e LocationClient insieme per ottenere la posizione dell'utente
Secondo la documentazione:
LocationClient.getLastLocation()
Returns the best most recent location currently available.
e
LocationManager.getLastKnownLocation(String)
Returns a Location indicating the data from the last known location fix obtained from the given provider.
Se ho ragione, il primo mi darà un risultato molto buono (o qualche volta nulla) mentre il secondo mi darà un risultato che raramente sarebbe nullo.
Questo è il mio codice (semplificato)
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationClient = new LocationClient(this, this, this);
@Override
public void onConnected(Bundle dataBundle) {
setUserLocation();
}
private void setUserLocation() {
myLocation = locationClient.getLastLocation();
if (myLocation == null) {
myLocation = locationManager.getLastKnownLocation(locationManager.getBestProvider(new Criteria(), false));
if (myLocation == null) {
//I give up, just set the map somewhere and warn the user.
myLocation = new Location("");
myLocation.setLatitude(-22.624152);
myLocation.setLongitude(-44.385624);
Toast.makeText(this, R.string.location_not_found, Toast.LENGTH_LONG).show();
}
} else {
isMyLocationOK = true;
}
}
Sembra di essere al lavoro, ma le mie domande sono:
- è la mia comprensione di
getLastLocation
egetLastKnownLocation
corretta? - È un buon approccio?
- Posso avere problemi ad utilizzare entrambi nella stessa attività?
Grazie
Buono a sapersi! Ho già il codice per gestire la disponibilità di Google Play (infatti l'app potrebbe non funzionare senza di essa). All'inizio usavo solo LocationServices ma molte volte ho ottenuto strani risultati da esso. Passare a LocationClient mi ha dato risultati molto migliori, ma anche risultati nulli in molti casi che non riuscivo a riprodurre. Ho pensato che il sistema Android potesse registrare l'ultima posizione conosciuta in un posto che sarebbe accessibile solo alla classe LocationService, quindi il mio codice sopra. Se ciò non è vero, allora è meglio fare affidamento solo su LocationClient, giusto? – Androiderson
Vedere questo [flusso] (http://developer.android.com/images/location/getting-location.png) del [web ufficiale degli sviluppatori.] (Http://developer.android.com/guide/topics/ posizione/strategies.html) – Aiapaec