7
¿Cómo puedo actualizar los intervalos de tiempo y distancia, o llamar de nuevo a requestLocationUpdates con diferentes intervalos?intervalo de actualización en requestLocationUpdates
Mi código:
LocationManager locationManager = (LocationManager) activityObject.getSystemService(Context.LOCATION_SERVICE);
cll = new CheckinLocationListener();
LocationProvider gps = locationManager.getProvider(LocationManager.GPS_PROVIDER);
// GPS
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, timeDelay, distanceDelay, cll);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
onLocationChanged:
if(location.getSpeed()>=0 && location.getSpeed()<= 3)
{
LocationsModel.this.distanceDelay = 25;
LocationsModel.this.timeDelay = 10000;
}
else if(location.getSpeed()>=3 && location.getSpeed()<= 17)
{
LocationsModel.this.distanceDelay = 150;
LocationsModel.this.timeDelay = 60000;
}
else if(location.getSpeed()>=17)
{
LocationsModel.this.distanceDelay = 300;
LocationsModel.this.timeDelay = 240000;
}
me gustaría utilizar los nuevos intervalos en el siguiente compás.
Funciona, lo he puesto en LocationChanged después de las comprobaciones, pero se repite infinitamente, se inicia gps y lo apaga después de cada segundo. Entonces el icono de GPS parpadea continuamente, y obtengo una coordenada por cada segundo. – McDermott
Tal vez deba cambiar su condición "me estoy moviendo" porque esto volverá a ser cierto incluso cuando esté estacionario o si LocationProvider no admite velocidad (debido a 'location.getSpeed ()> = 0'). Quizás esto debería ser 'location.getSpeed ()> = 0.5' para que no sea constante jabbering debido a pequeños movimientos. Tal vez también debería verificar primero 'location.hasSpeed ()'. –
He intentado con location.hasSpeed () y location.getSpeed ()> = 1, pero sigo recibiendo una coordenada cada segundo. Creo que cuando llamo a una nueva requestLocationUpdates, que invoca a LocationChanged de inmediato, se conecta a un proveedor gps, por lo que se repite. – McDermott