Service State Repository
Repositorio centralizado para la gestión de estados de todos los servicios de salud.
Esta clase implementa el patrón Singleton y actúa como el centro de coordinación para todos los datos y estados de la aplicación. Funciona como:
Arquitectura Central
ServiceStateRepository
├── Estados de Servicios (ServiceType → ServiceState)
├── Datos de Salud (HealthData)
├── Análisis HRV (HRVCalculator)
├── Actividad Física (Acelerómetro)
├── Estrés Térmico (HeatStressRiskLevel)
└── Datos Históricos (HealthDataHistoryRepository)Responsabilidades Principales
1. Gestión de Estados
Coordina estados de todos los servicios (ServiceType)
Proporciona actualizaciones thread-safe
Mapea estados internos a estados UI
2. Procesamiento de Datos
Recibe datos de Samsung Health SDK
Procesa datos de acelerómetro para actividad física
Calcula HRV en tiempo real
Analiza riesgo de estrés térmico
3. Almacenamiento
Mantiene datos actuales en memoria
Coordina con HealthDataHistoryRepository
Gestiona flush de datos históricos
Flujo de Datos
Samsung Health SDK → Observer → ServiceStateRepository → StateFlow → UI
↓
HealthDataHistoryRepositoryEjemplo de Uso
val repository = ServiceStateRepository.getInstance(context)
// Observar estados de servicios
repository.serviceStates.collect { states ->
// Actualizar UI basándose en estados
}
// Actualizar datos de salud
repository.updateHealthData {
copy(heartRate = 75, temperature = 36.5f)
}
// Manejar emergencia
repository.setEmergencyMode(true)Thread Safety
Utiliza ConcurrentHashMap para estados
StateFlow para observación thread-safe
CoroutineScope para operaciones asíncronas
Actualizaciones atómicas de datos
Author
WiLoc Team
Since
1.0.0
Parameters
Contexto de la aplicación
See also
Properties
StateFlow observable de actividad acumulada
StateFlow observable del nivel de actividad actual
StateFlow observable de datos de salud actuales
StateFlow observable del riesgo de estrés térmico
StateFlow observable del análisis HRV actual
StateFlow observable de recomendaciones HRV
StateFlow observable del estado de emergencia
Timestamp de la última actualización
StateFlow observable de estados de todos los servicios
Buffer para cálculos de actividad física
Repositorio de datos históricos
Calculadora de HRV
Timestamp de la última actualización de actividad
Timestamp del último log de HRV
Scope para operaciones asíncronas del repositorio
Mapa thread-safe para estados individuales
Functions
Limpieza completa del repositorio con flush de datos.
Crea una instancia de HealthDataPoint a partir del HealthData actual para su uso con el modelo de Machine Learning.
Exporta datos para entrenamiento de modelos ML.
Fuerza el guardado de todos los datos históricos pendientes.
Obtiene el nivel de batería actual del dispositivo.
Obtiene los datos de salud actuales con batería actualizada.
Obtiene el análisis HRV actual.
Obtiene las métricas actuales de estrés térmico.
Obtiene estadísticas del buffer de datos históricos.
Obtiene estadísticas del buffer HRV.
Obtiene las recomendaciones HRV actuales.
Obtiene la tendencia de HRV.
Obtiene el observer para Samsung Health SDK.
Obtiene el estado actual de un servicio específico.
Obtiene un resumen del estado de servicios.
Verifica si HRV está listo para análisis.
Mapea nivel de estrés HRV a entero para transmisión BLE.
Callback de datos de acelerómetro recibidos.
Callback de trackers SDK disponibles.
Callback de cambio de estado del dispositivo (on-body/off-body).
Registra una caída detectada.
Callback de datos de frecuencia cardíaca recibidos.
Callback de resultado de conexión con Samsung Health SDK.
Callback de error en Samsung SDK.
Callback de datos de temperatura recibidos.
Callback de actualización de conteo de pasos.
Procesa datos del acelerómetro para calcular niveles de actividad física.
Procesa nuevos datos IBI (Inter-Beat Interval) para calcular HRV.
Resetea todos los estados a sus valores iniciales.
Resetea el estado de detección de caídas.
Reinicia los datos de HRV.
Actualiza el estado de emergencia.
Callback de inicio de listener de contador de pasos.
Actualiza el estado de la batería.
Actualiza los datos de salud usando una función de transformación.
Actualiza los datos de salud con información HRV.
Actualiza la predicción de estrés térmico utilizando el modelo de machine learning.
Actualiza múltiples estados de servicios de una vez.
Actualiza el estado de un servicio específico.