handleStepCounterData

private fun handleStepCounterData(totalStepsFromSensor: Long)

Maneja los datos del sensor STEP_COUNTER.

Implementa la lógica para:

  • Inicialización de la línea base (baseline)

  • Detección de reinicios del sensor

  • Cálculo de los pasos de la sesión actual

  • Validación de los datos recibidos

Esta función es el núcleo del conteo de pasos. Asegura que los pasos se cuenten desde cero para cada sesión, maneja posibles reinicios del sensor (por ejemplo, reinicio del dispositivo o mal funcionamiento del sensor) y valida los datos entrantes.

Flujo de Trabajo:

  1. Validación de Datos: Comprueba si totalStepsFromSensor no es negativo. Registra una advertencia y retorna si el valor no es válido.

  2. Línea Base Inicial: Si stepCountInitialized es falso, esta es la primera lectura válida. Llama a initializeStepCounterBaseline() para establecer la línea base inicial y emitir 0 pasos.

  3. Detección de Reinicio del Sensor: Si totalStepsFromSensor es menor que lastSensorTotalSteps, se sospecha un reinicio del sensor. Llama a initializeStepCounterBaseline() para reiniciar la línea base con el nuevo valor más bajo, reiniciando efectivamente el conteo de la sesión desde este nuevo punto, pero preservando la idea de pasos de "sesión".

  4. Actualizar Último Total Conocido: Almacena totalStepsFromSensor en lastSensorTotalSteps para la siguiente comparación.

  5. Verificación de Listo para Emitir: Asegura que readyToEmitSteps sea verdadero. Esta bandera es establecida por initializeStepCounterBaseline y previene la emisión de valores intermedios si ocurre un reinicio inmediatamente después de la inicialización.

  6. Calcular Pasos de la Sesión: Calcula currentSessionSteps como