Galaxy Watch su Android senza Samsung Health
Cosa ho imparato integrando Health Services di Wear OS in FitMesh, e perché Samsung Health non era la strada giusta.
Quando ho iniziato a costruire FitMesh, la strada apparentemente più semplice era usare Samsung Health come fonte dati. Il problema l'ho capito presto: Samsung Health non espone una API stabile pubblica per leggere i dati grezzi di terze parti su Android. Esisteva, è stata deprecata, è tornata sotto altra forma, e oggi è di fatto un walled garden.
La via giusta: Health Services di Wear OS
Health Services è l'API ufficiale di Google per dati biometrici su Wear OS. Funziona così:
- Sul wearable installi un piccolo client (Wear OS app)
- Il client si registra come listener per i dati:
HEART_RATE_BPM,STEPS_DAILY,CALORIES_DAILY, etc. - I dati arrivano in streaming mentre l'utente indossa l'orologio
- Periodicamente, il client li sincronizza con il telefono via
Wearable Data Layer - Sul telefono Android, l'app FitMesh li riceve e li passa al backend
Le insidie che ho incontrato
Battery drain. All'inizio campionavo battiti cardiaci ogni 5 secondi. Risultato: orologio scarico in 6 ore. Sono passato a MEASURE_TYPE_DAILY per le aggregazioni e a sample on-demand solo durante un workout esplicito.
Permessi. L'utente deve concedere i permessi sia sul telefono che sull'orologio, separatamente. Ho dovuto progettare un'esperienza che renda chiaro questo doppio passaggio senza confondere.
Offline-first. L'orologio non è sempre connesso al telefono. Il client Wear OS scrive in un database SQLite locale, e il sync avviene quando il Data Layer si connette.
Cosa rifarei
Userei androidx.health.connect.client come livello aggiuntivo: permette di leggere dati anche da altre app salute (Strava, Adidas, ecc.), espandendo la base di utenti senza dover scrivere integrazioni custom.
Per ora, il design "Watch → Phone → Cloud" funziona, ma sento che il modello giusto è "Watch → Health Connect → Apps". Vediamo se Google ci arriverà davvero.
Perché Health Connect cambia tutto
androidx.health.connect.client è l'hub unificato di salute di Google, introdotto su Android 14 come componente di sistema e disponibile come APK separato su Android 9–13. Il concetto è semplice ma potente: qualsiasi app può scrivere dati biometrici in Health Connect, e qualsiasi altra app può leggerli — previa autorizzazione esplicita dell'utente per ogni tipo di dato.
Per un progetto come FitMesh questo significa separare i due ruoli in modo netto:
- Raccolta dati: la Wear OS app continua a usare Health Services per leggere i sensori e scrivere i record in Health Connect (via
HealthConnectClient.insertRecords). - Lettura dati: FitMesh — o qualunque altra app — richiede i permessi di lettura e interroga Health Connect, indipendentemente da quale wearable o app ha prodotto i dati.
Il risultato pratico è che l'integrazione smette di essere vendor-specific: un utente con un Pixel Watch, un Galaxy Watch o un Fitbit può alimentare lo stesso flusso dati, purché il relativo client scriva in Health Connect. Il wearable diventa intercambiabile.
Il trade-off da tenere a mente: su Android 9–12 Health Connect richiede un'installazione separata dal Play Store, e l'utente potrebbe non averla. Va gestita la fallback con un messaggio chiaro e un deep-link all'installazione.
Il modello "Watch → Health Connect → Apps" non è ancora lo standard de facto, ma è la direzione dichiarata di Google. Costruire verso di esso oggi riduce il debito tecnico di domani.