SamsungHealthConnector

Conector avanzado para Samsung Health SDK y sensores Android.

Esta clase gestiona la conexión completa con el ecosistema de sensores de Samsung:

  • Samsung Health SDK: Sensores biométricos avanzados

  • Android Sensors: Sensores estándar del sistema

  • Gestión de Estados: Control de conexión y errores

  • Optimización de Batería: Pausar/reanudar según contexto

Arquitectura del Conector

SamsungHealthConnector
├── Samsung Health SDK
│ ├── HealthTrackingService
│ ├── HeartRateTracker (HR + IBI)
│ ├── SkinTemperatureTracker
│ └── AccelerometerTracker
├── Android Sensors
│ ├── STEP_COUNTER
│ └── LOW_LATENCY_OFFBODY_DETECT
└── State Management
├── Connection States
├── Sensor Registration
└── Error Handling

Características Principales

1. Gestión Híbrida de Sensores

  • Combina Samsung Health SDK con sensores Android estándar

  • Fallback automático si ciertos sensores no están disponibles

  • Validación de datos específica por sensor

2. Contador de Pasos Simplificado

  • Utiliza STEP_COUNTER para máxima precisión

  • Inicio desde cero en cada sesión

  • Manejo de reinicios del sensor

  • No persistencia entre sesiones

3. Detección Off-Body Inteligente

  • Sensor de baja latencia cuando disponible

  • Pausar mediciones automáticamente

  • Conservación de batería

  • Reactivación automática

4. Validación de Datos IBI

  • Implementa lógica oficial de Samsung

  • Filtrado por estado (status == 0)

  • Validación de valores no nulos

  • Consistencia entre listas IBI y estados

Flujo de Inicialización

connect() → HealthTrackingService.connectService()

onConnectionSuccess() → getTrackingCapability()

initializeAndSetListener() → tracker.setEventListener()

onDataReceived() → processData() → observer.onXxxReceived()

Gestión de Errores

  • Resolución Automática: Excepciones con hasResolution()

  • Reconexión: Intentos automáticos en desconexión

  • Degradación Controlada: Fallback a sensores básicos

  • Notificación: Errores reportados al observer

Optimizaciones de Batería

  • Pausar Off-Body: Detener mediciones cuando no se usa

  • Reactivación Inteligente: Reanudación automática

  • Gestión de Recursos: Liberación apropiada de listeners

  • Configuración Adaptativa: Ajuste según contexto de uso

Author

WiLoc Team

Since

1.0.0

Parameters

context

Contexto de la aplicación

observer

Observer para recibir callbacks de datos y eventos

See also

Constructors

Link copied to clipboard
constructor(context: Context, observer: SamsungHealthConnectionObserver)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
private val activeTrackers: ConcurrentHashMap<HealthTrackerType, HealthTracker>

Mapa de trackers activos

Link copied to clipboard
private var baselineStepCount: Long

Valor inicial del sensor al iniciar

Link copied to clipboard

Referencia a la actividad para resolución de excepciones

Link copied to clipboard
private val context: Context
Link copied to clipboard

Simulador para leer datos de sensores desde un archivo CSV.

Link copied to clipboard

Pasos de la sesión actual (siempre desde 0)

Link copied to clipboard
private val dataProcessingLock: Any

Lock para asegurar que los datos entrantes se procesan de forma secuencial. Evita que se invoque onDataReceived de nuevo antes de terminar con el lote anterior.

Link copied to clipboard
private val desiredSdkTrackers: <Error class: unknown class>

Lista de trackers deseados

Link copied to clipboard
private val handler: Handler

Handler para el hilo principal

Link copied to clipboard
private var healthTrackingService: HealthTrackingService?

Servicio principal de Samsung Health

Link copied to clipboard
Link copied to clipboard
private var isOnBody: Boolean

Estado on-body actual

Link copied to clipboard
Link copied to clipboard

Estado de registro de sensores

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
private val offBodyListener: SamsungHealthConnector.<no name provided>

Listener para eventos del sensor de detección off-body.

Link copied to clipboard
private var offBodySensor: Sensor?

Sensor de detección off-body

Link copied to clipboard
Link copied to clipboard
private var sdkIsConnected: Boolean

Estado de conexión del SDK

Link copied to clipboard

Gestor de sensores del sistema

Link copied to clipboard
private val serviceConnectionListener: SamsungHealthConnector.<no name provided>

Listener para los eventos de conexión del SDK de Samsung Health.

Link copied to clipboard
private val stepCounterListener: SamsungHealthConnector.<no name provided>

Listener para eventos del sensor contador de pasos.

Link copied to clipboard

Sensor contador de pasos

Link copied to clipboard

Flag de inicialización del contador

Functions

Link copied to clipboard
private fun clearAllTrackers()

Limpia todos los trackers activos del Samsung Health SDK.

Link copied to clipboard
fun connect(activity: Activity?)

Conecta con el servicio de Samsung Health e inicializa el contador de pasos.

Link copied to clipboard
private fun createTrackerListener(trackerType: HealthTrackerType): HealthTracker.TrackerEventListener

Crea un listener específico para cada tipo de tracker.

Link copied to clipboard

Desconecta del servicio y limpia recursos.

Link copied to clipboard

Obtiene el estado actual del modo de bucle del simulador CSV.

Link copied to clipboard

Obtiene estadísticas del contador de pasos.

Link copied to clipboard
private fun handleStepCounterData(totalStepsFromSensor: Long)

Maneja los datos del sensor STEP_COUNTER.

Link copied to clipboard
private fun initializeAndSetListener(service: HealthTrackingService, trackerType: HealthTrackerType)

Inicializa y establece un listener para un rastreador específico.

Link copied to clipboard

Inicializa el sensor de detección off-body.

Link copied to clipboard

Inicializa el contador de pasos utilizando el sensor STEP_COUNTER de Android y, si está habilitado, el sensor LOW_LATENCY_OFFBODY_DETECT.

Link copied to clipboard
private fun initializeStepCounterBaseline(totalSteps: Long)

Inicializa la línea base del contador de pasos.

Link copied to clipboard

Verifica si el SDK está conectado.

Link copied to clipboard

Pausa las mediciones activas de los sensores del Samsung Health SDK cuando el dispositivo se detecta fuera de la muñeca.

Link copied to clipboard
private fun processAccelerometerData(dataPoint: DataPoint)

Procesa datos de acelerómetro del Samsung Health SDK.

Link copied to clipboard
private fun processHeartRateData(dataPoint: DataPoint)

Procesa datos de frecuencia cardíaca (HR) y de intervalo entre latidos (IBI).

Link copied to clipboard
private fun processSkinTemperatureData(dataPoint: DataPoint)

Procesa datos de temperatura de piel.

Link copied to clipboard
private fun reinitializeAfterSensorReset(newTotalSteps: Long)

Reinicializa el contador de pasos después de que el sensor se haya reiniciado.

Link copied to clipboard
private fun resumeMeasurements()

Reanuda las mediciones de los Samsung Health SDK trackers.

Link copied to clipboard
fun setMaxLoops(loops: Int?)

Establece el número máximo de veces que el simulador repetirá el archivo CSV.

Link copied to clipboard

Cambia el modo loop dinámicamente durante la simulación

Link copied to clipboard

Intenta inicializar el modo de simulación de datos desde un archivo CSV.

Link copied to clipboard
private fun unregisterStepCounter()

Desregistra el listener del sensor contador de pasos.