es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Restaurar los datos del Contador de Pasos después de reiniciar el teléfono.

Estoy escribiendo una aplicación de android en java que utiliza los valores del sensor de contador de pasos del teléfono Android para registrar los pasos que da el usuario al caminar.
Básicamente, mi código en java para mostrar los pasos actuales es el siguiente:

if (running) {
    totalSteps = event.values[0];
    currentSteps = totalSteps - previousTotalSteps;
    tv_stepsTaken.setText(String.valueOf(currentSteps));
}

Estoy utilizando SharedPreferences para cargar, guardar y reiniciar previousTotalSteps diariamente.

Mi problema es que cuando se reinicia el teléfono, el valor del evento totalSteps del sensor de contador de pasos se restablece automáticamente a cero, lo que hace que mi valor currentSteps sea negativo, ya que se está restando previousTotalSteps del valor cero. La única solución que se me ocurre es establecer previousTotalSteps también en cero. Pero esto contradecirá el propósito de registrar los pasos diarios. Si el usuario reinicia el teléfono a mitad del día, entonces se perderán los datos de medio día o se mostrarán como negativos. También estoy registrando este valor de pasos diarios en una base de datos de SQLite para mostrarlo gráficamente al usuario. Entonces, este valor negativo también se guarda en la base de datos y arruina el gráfico histórico. Necesito sugerencias para resolver este problema. Mi código para reiniciar los datos es el siguiente:

previousTotalSteps = totalSteps;
tv_stepsTaken.setText("0");
saveStepsData();
return true;
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución es guardar el valor de previousTotalSteps en un almacenamiento persistente (como SharedPreferences o una base de datos) cada vez que se actualice, no solo diariamente. De esta manera, si el teléfono se reinicia, se puede recuperar el valor de previousTotalSteps y utilizarlo para calcular el valor actual correcto de currentSteps. Además, podrías verificar si el valor de currentSteps es negativo y, de ser así, restablecer tanto previousTotalSteps como totalSteps a 0 para evitar que se registren valores negativos en la base de datos. Por último, también podrías implementar una comprobación para asegurarte de que si el valor de previousTotalSteps recuperado del almacenamiento es mayor que el valor totalSteps actual, entonces restablecerlo también a 0.

Comments are closed.