Fosforonero
FitMeshMarch 12, 2026 · 3 min read

Galaxy Watch on Android without Samsung Health

What I learned integrating Wear OS Health Services into FitMesh, and why Samsung Health was the wrong path.

When I started building FitMesh, the apparently easiest path was using Samsung Health as the data source. I figured out the catch early: Samsung Health doesn't expose a stable, public API for third parties to read raw data on Android. It existed, then it was deprecated, then it came back in a different shape, and today it's effectively a walled garden.

The right path: Wear OS Health Services

Health Services is Google's official API for biometric data on Wear OS. It works like this:

  1. You install a small client on the wearable (a Wear OS app)
  2. The client registers as a listener for the data you want: HEART_RATE_BPM, STEPS_DAILY, CALORIES_DAILY, and so on
  3. The data streams in while the user wears the watch
  4. Periodically, the client syncs it to the phone via the Wearable Data Layer
  5. On the Android phone, the FitMesh app receives it and forwards it to the backend

The traps I hit along the way

Battery drain. Initially I was sampling heart rate every 5 seconds. Result: a dead watch in 6 hours. I switched to MEASURE_TYPE_DAILY for aggregates and on-demand sampling only during an explicit workout.

Permissions. The user has to grant permissions on the phone and on the watch, separately. I had to design an experience that makes this two-step flow obvious without confusing anyone.

Offline-first. The watch isn't always connected to the phone. The Wear OS client writes to a local SQLite store, and the sync runs as soon as the Data Layer reconnects.

What I'd do differently

I would adopt androidx.health.connect.client as an additional layer: it lets you read data from other health apps too (Strava, Adidas, and so on), expanding the user base without writing custom integrations.

For now, the "Watch → Phone → Cloud" design works, but I have the feeling the right model is "Watch → Health Connect → Apps". We'll see if Google actually gets there.

Why Health Connect changes everything

androidx.health.connect.client is Google's unified health data hub, available as a system component on Android 14 and as a separate APK on Android 9–13. The concept is straightforward but powerful: any app can write biometric records into Health Connect, and any other app can read them — with explicit user consent for each data type.

For a project like FitMesh this means cleanly splitting two roles:

  • Data collection: the Wear OS app continues to use Health Services to read the sensors, then writes the records into Health Connect via HealthConnectClient.insertRecords.
  • Data reading: FitMesh — or any other app — requests read permissions and queries Health Connect, regardless of which wearable or companion app produced the data.

The practical outcome is that the integration stops being vendor-specific. A user with a Pixel Watch, a Galaxy Watch, or a Fitbit can feed the same data pipeline, as long as the relevant client writes to Health Connect. The wearable becomes interchangeable.

The trade-off worth keeping in mind: on Android 9–12, Health Connect requires a separate install from the Play Store, and the user may not have it. You need to handle the fallback with a clear message and a deep-link to the installation.

The "Watch → Health Connect → Apps" model isn't the de-facto standard yet, but it's Google's stated direction. Building toward it today reduces tomorrow's technical debt.