Su pregunta no es clara y código initially.Your título no son coincidentes. Estoy dando respuesta solo por tu título.
Debe registrar el Oyente de ubicación para su Administrador de ubicación, entonces solo se llamará a onLocationChanged() de acuerdo con la configuración que proporcionó al registrar el oyente de ubicación.
Vea a continuación el código de cómo hacerlo. Utilicé el Proveedor de GPS, también puede usar cualquier proveedor según los criterios.
LocationManger lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
@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
}
});
Viniendo a su pregunta, onLocationChanged() será llamado si la actualización de la ubicación actual no coincide con la última ubicación conocida.
La ubicación actualizada se cambiará para cada minTime (en mi caso 1000 milisegundos) y también si el dispositivo movió distancia minDistance (en mi caso 0 metros).
Espero que entienda esto.
Perdón por eso Yugandhar, tengo demasiadas preguntas en una, tengo que dejar de hacerlo, SO es muy confuso. –
Tengo exactamente el mismo código que usted en otra actividad y es el que me gustaría usar, pero no puedo matar la actividad una vez que se inicia sin importar cuánto intento. Tendré que poner eso en otra publicación. ¡Gracias por tu ayuda! –
, pero ¿cómo puede distinguir los casos en los que no se llama a onlocationchanged porque su ubicación no ha cambiado, desde los casos cuando onlocationchanged no se llama porque las señales gps son débiles y no se puede obtener una corrección de ubicación? – dariusiv