2011-01-19 23 views
12

necesito obtener la ubicación del usuario actual en una aplicación de Android, así que he leído algunos tutoriales y muestras en la web, pero veo que en todos los ejemplos, la ubicación se recupera de un "onLocationChange" que significa que cada vez que cambia la ubicación, se ejecuta el código en "onLocationChange".Android - Obtener ubicación solo una vez

solo necesito obtener la ubicación del usuario en el momento en que se inicia la aplicación.

Gracias por su ayuda!

Respuesta

4

Puede hacer esto con LocationManager. getLastKnownLocation

+0

gracias por su respuesta, de su enlace parece que siempre tengo que establecer un proveedor ... ¿no es así? ¿Tengo que obtener el mejor proveedor y configurarlo en getLastKnownLocation? –

+0

Sí, eso es lo que necesita hacer. – elevine

1

poner esto en la actividad principal:


boolean bFirst = true; 
function void onCreate(blabla) { 
    if(bFirst) { 
    //Do your stuff to get the location 
    bFirst = false; 
    } 
} 

poner la misma en el onResume();

+0

esto hace que el código se ejecute solo una vez, pero la prueba de condición se prueba continuamente –

10

Puede obtener la última ubicación conocida usando el siguiente código. Hace que los proveedores de ubicación y los bucles sobre la matriz retrocedan. Es decir, comienza con GPS, si no hay GPS, entonces obtiene la ubicación de la red. Puede llamar a este método cada vez que necesite obtener la ubicación.

private double[] getGPS() { 
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
List<String> providers = lm.getProviders(true); 

/* Loop over the array backwards, and if you get an accurate location, then break     out the loop*/ 
Location l = null; 

for (int i=providers.size()-1; i>=0; i--) { 
l = lm.getLastKnownLocation(providers.get(i)); 
if (l != null) break; 
} 

double[] gps = new double[2]; 
if (l != null) { 
gps[0] = l.getLatitude(); 
gps[1] = l.getLongitude(); 
} 
return gps; 
} 
+1

obtengo 0.0 para lat y long, ¿por qué ideas? – Maurice

+0

¿Está probando el emulador o el dispositivo real? – Phobos

+0

No, trabajando en S3 y S2 –

0

Para el método getGPS() la que Fobos propuesta para que funcione correctamente hay que permitir el acceso dentro de su AndroidManifest.xml

que logrará erradicar de su error de recibir 0.0

Añadir estas líneas:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.LOCATION_HARDWARE" /> 
Cuestiones relacionadas