Iván, parte de este staff, nos ha hecho el favor de crear esta crónica ya que controla perfectamente este tema.
Solución:
Primero debe definir un LocationListener
para manejar los cambios de ubicación.
private final LocationListener mLocationListener = new LocationListener()
@Override
public void onLocationChanged(final Location location)
//your code here
;
Entonces consigue el LocationManager
y solicitar actualizaciones de ubicación
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME,
LOCATION_REFRESH_DISTANCE, mLocationListener);
Y finalmente, asegúrese de haber agregado el permiso en el Manifiesto,
Para usar solo la ubicación basada en la red, use esta
Para la ubicación basada en GPS, este
Necesitas escribir código en el EnUbicaciónCambiada método, porque este método se llama cuando la ubicación ha cambiado. Es decir, debe guardar la nueva ubicación para devolverla si se llama a getLocation.
Si no usas el enUbicaciónCambiada siempre será la antigua ubicación.
Estoy usando este tutorial y funciona muy bien para mi aplicación.
En mi actividad pongo este código:
GPSTracker tracker = new GPSTracker(this);
if (!tracker.canGetLocation())
tracker.showSettingsAlert();
else
latitude = tracker.getLatitude();
longitude = tracker.getLongitude();
también verifique si su emulador se ejecuta con la API de Google
Recuerda que puedes mostrar esta reseña si lograste el éxito.