/ / Posizione Android: ottieni la prima posizione: android, gps, locationmanager

Posizione Android: ottieni la prima posizione - android, gps, locationmanager

Devo calcolare alcune cose quando ottengo la prima posizione (non deve essere molto preciso).

Ho un LocationManager e un LocationListenere fino ad ora ho un firstTime booleano che è inizialmente vero e la prima volta che si chiama onlocationChanged l'ho impostato su false. Ma ogni volta che viene chiamato il metodo onlocationChanged (ogni 5 secondi) controllo se firstTime è falso.

Questa soluzione non mi soddisfa davvero, esiste un modo migliore per verificare la prima volta gli eventi? (Questa domanda potrebbe trovarsi in un contesto più ampio, non solo nella posizione GPS).

Fornirò del codice per una migliore comprensione:

boolean firstLocation = true;
LocationManager locManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);

LocationListener locListener = new LocationListener() {

@Override
public void onLocationChanged(Location location) {
if (firstLocation == true) {
sights = getListForLocation(location, GPS_INITIAL_PERIMETER);
firstLocation = false;
}
// do something everytime onLocationChanged is called

}
};

/**
* starts the listener for GPS-Positions
*/
public void start() {
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
GPS_UPDATE_TIME, GPS_UPDATE_DISTANCE, locListener);
}

Come puoi vedere, devo fare qualcosa solo la prima volta che ottengo una nuova posizione.

risposte:

1 per risposta № 1

Inizializza la tua posizione con null e controllala:

if(lastKnownLocation == null)
{
//first time
}

e su LocationListener fai:

@Override
public void onLocationChanged(Location location)
{
lastKnownLocation = location;
}