Pregunta

Así que estoy intentando muestrear las coordenadas gps solo una vez en una aplicación. No quiero crear un objeto LocationListener para obtener actualizaciones de gps constantemente. Quiero esperar hasta recibir las coordenadas y luego continuar con otra tarea.

Aquí hay un fragmento de código

LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);

La variable loc siempre es nula en el emulador. Intenté usar el comando " geo fix latitude longitude " para configurarlo, y también intenté usar la forma DDMS de configurarlo. Ninguno de los métodos tuvo efecto en el código. Además, el fragmento de código no causa ninguna excepción.

Gracias por tu ayuda.

¿Fue útil?

Solución

La llamada para solicitar la actualización de una ubicación no está bloqueando, por lo que no esperará allí. También es posible que el proveedor en el emulador no se haya iniciado.

¿Una posible comprobación podría ser ver si la configuración en ella desactiva el proveedor de GPS? luego enviar geo fix.

Sin embargo, usaría Location Listener, sería ideal en su caso, ya que necesita una solución de geo para continuar. El Location Listener se utiliza para recibir notificaciones del LocationManager cuando la ubicación ha cambiado. Puede anular el registro del oyente después de la primera geofix.

Nota: puede tomar algún tiempo en el dispositivo obtener la ubicación actual, e incluso en el dispositivo puede devolver el valor nulo.

Otros consejos

Intente usar MyLocationOverlay , crea un runnable que haga lo que necesitas hacer con esa ubicación GPS y pásalo a

boolean     runOnFirstFix(java.lang.Runnable runnable)
          Queues a runnable to be executed as soon as we have a location fix.

y luego deshabilite las actualizaciones de ubicación para MyLocationOverlay.

Editar: la razón por la que la ubicación es nula es porque en el momento en que se ejecuta el código, no se ha recibido ningún geofix.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top