calculateStepRate

private fun calculateStepRate(currentStepCount: Long): Float?

Calcula la tasa de pasos por minuto basada en el conteo actual y anterior.

Este método acumula la diferencia de pasos y el tiempo transcurrido entre llamadas. La tasa de pasos (pasos por minuto) se calcula solo cuando se cumplen dos condiciones:

  1. Ha habido un incremento en el contador de pasos (accumulatedSteps > 0).

  2. Ha transcurrido un intervalo de tiempo mínimo (MIN_STEP_RATE_INTERVAL_MS) desde la última vez que se calculó la tasa o desde la inicialización (accumulatedTimeMs >= MIN_STEP_RATE_INTERVAL_MS). Esto ayuda a evitar cálculos erráticos basados en intervalos muy cortos y a proporcionar una estimación más estable de la cadencia.

Comportamiento en casos especiales:

  • Primera llamada o después de un reseteo: Si lastStepTimestamp es 0 (lo que indica la primera llamada o un reseteo manual a través de resetStepRate), se inicializan lastStepCount y lastStepTimestamp con los valores actuales y se devuelve null, ya que no hay datos previos para calcular una tasa.

  • Reinicio del sensor: Si currentStepCount es menor que lastStepCount (lo que puede indicar un reinicio del sensor de pasos del dispositivo), se llama a resetStepRate para limpiar los valores acumulados y de referencia, se actualizan lastStepCount y lastStepTimestamp, y se devuelve null.

  • Sin incremento de pasos o intervalo corto: Si no hay nuevos pasos acumulados o el tiempo acumulado es menor que MIN_STEP_RATE_INTERVAL_MS, se actualizan lastStepCount y lastStepTimestamp para la siguiente llamada, pero se devuelve null ya que no se calcula una nueva tasa. Los contadores accumulatedSteps y accumulatedTimeMs continúan acumulando.

Cuando se calcula una tasa válida: