¿Cómo puedo obtener la ubicación GPS actual?

Estoy a punto de construir una aplicación en Android que actuará como un reloj en la tarjeta para los empleados en el camino.

Al inicio de un trabajo el usuario hará clic en un botón que registrará la ubicación GPS y la hora actual (comprobando así que él está donde debería estar en un momento dado) y de nuevo al final del trabajo registra la hora y el GPS ubicación.

Así que creo que esto será bastante fácil, excepto que no puedo encontrar una manera de tirar de los datos de ubicación actual. El más cercano que puedo encontrar es onLocationChanged que implica que no puedo obtener un GPS estacionario leer. Sé que tiene que ser posible hacer esto pero no puede encontrar un ejemplo de funcionamiento de cómo sería alcanzado.

Después de un poco de investigación esto es lo que me ocurrió:

 public class UseGps extends Activity { Button gps_button; TextView gps_text; LocationManager mlocManager; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); gps_button = (Button) findViewById(R.id.GPSButton); gps_text = (TextView) findViewById(R.id.GPSText); gps_button.setOnClickListener(new OnClickListener() { public void onClick(View viewParam) { gps_text.append("\n\nSearching for current location. Please hold..."); gps_button.setEnabled(false); mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); LocationListener mlocListener = new MyLocationListener(); mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener); } }); } /* Class My Location Listener */ public class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location loc) { double lon = loc.getLatitude(); double lat = loc.getLongitude(); gps_text.append("\nLongitude: "+lon+" - Latitude: "+lat); UseGps.this.mlocManager.removeUpdates(this); gps_button.setEnabled(true); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } } } 

Esto configura una actividad con un botón y textview. Establezca un oyente en el botón que inicia el administrador de ubicaciones.

He configurado una clase, MyLocationListener , que implementa LocationListener , y luego anular el método onLocationChanged() , básicamente decirle que la primera ubicación que obtiene agrega a la vista de texto y, a continuación, elimina el administrador de ubicación.

Gracias a los que ayudaron y espero que esto sea de utilidad para alguien más.

Usted debe intentar android.location.LocationManager.getLastKnownLocation ( http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String) ).

Y compruebe la hora de la ubicación devuelta usando Location.getTime (tiempo utc).

Solicite actualizaciones de ubicación y cree un LocationListener (consulte LocationManager.requestLocationUpdates ). Recibirá actualizaciones periódicas con información sobre la exactitud.

Hasta que obtenga su primera actualización, puede (como se publicó) use LocationManager.getLastLocation() y compruebe su marca de tiempo y precisión.

Palabra de advertencia – algunos dispositivos de exploración tomar una eternidad para obtener una lectura precisa, y es completamente al azar.

  • ¿Cómo podemos crear un gráfico de las dependencias de Dagger 2?
  • Modos de envío y recepción de DES para la autenticación DESFire
  • Obtenga la colección de nombres de parámetros de la url de Java / Android
  • Cómo asignar AffineTransform de java a Matrix de Android?
  • Android incluye programación de diseño (es decir, sin XML)
  • array = java.lang.IndexOutOfBoundsException: Rango de matriz no válido de 10 a 10
  • ¿Cómo obtener la versión SDK de la aplicación y no del dispositivo?
  • Android (ART) bloqueo con error JNI DETECTED ERROR EN APLICACIÓN: jarray es una tabla de referencia indirecta de pila no válida o una referencia no válida
  • Android: Listener para grabar sonido si se produce algún sonido
  • Java.lang.AbstractMethodError cuando espía la LinkedList en Android
  • Eclipse: La instalación JRE especificada no existe
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.