Health Connect data type format

Data types in Health Connect are stored in objects that are subclasses of Record.

For each data type, there are associated fields that are either generic such as time and zoneOffset, or specific such as title, count, and percentage. Some fields use basic types—such as long, double, or string—while others use complex types like enumerations and classes like Instant and ZoneOffset. The attributes of these fields can be required or optional. Some attributes are read-only, and some attributes are clamped to a specific range of values.

For the full list of available data types and their fields, refer to the classes in Jetpack.

Metadata attributes

Data in the Health Connect API also includes metadata attributes described in the following list:

  • Health Connect ID: Each point of data is assigned with a unique identifier (UID) upon creation. This is useful for standard read and write operations. See Health Connect ID for more details.
  • Last modified time: This marks the timestamp the last instance a record has an update. It's automatically generated on the first creation of the record or on every update.
  • Data origin: Health Connect stores information about the app where the data came from. It contains the package name of that origin, which is automatically added upon creation.
  • Device: Health Connect stores information about the device where the data came from. It contains the manufacturer and model of that device, which you manually supply the value.
  • Client ID: Health Connect provides Client IDs so that client apps can refer to data using their own IDs, which helps with conflict resolution and makes syncing easier. This is supplied to the record manually.
  • Client record version: Along with the Client ID, Health Connect provides versioning to help tracking changes during data syncing. This is supplied to the record manually.
  • Recording method: Health Connect lets you understand how data is recorded. These methods include apps recording data passively (automatically), and users recording data actively or manually.

Health Connect ID

Health Connect assigns unique identifiers (UIDs) to newly inserted data objects, which identify data objects and distinguish them from others. Health Connect IDs are useful in read or write requests. Health Connect IDs aren't identical to Client IDs. A client app assigns Client IDs, while Health Connect exclusively assigns Health Connect IDs.

Keep in mind of the following notes when working with Health Connect IDs:

  • Sessions have a single Health Connect ID, but data within sessions have their own Health Connect IDs.
  • Health Connect IDs aren't tied or related to timestamps.
  • Some use cases might require storing a specific Health Connect ID during a workflow. For example, a specific ID is required to retrieve and show to a user the data entry that they just logged.

Time in Health Connect

All data written to Health Connect must specify the zone offset information. Specifying the zone offset enables apps to read the data to represent it in civil time. Civil time is the time that is local and relevant to the user, but not necessarily in Coordinated Universal Time (UTC).

In rare circumstances, the zone offset might not be available. When this occurs in Android 14 (API Level 34), Health Connect sets the zone offset based on the system default time zone of the device. In Android 13 and lower versions (API Level 33 and lower), it's possible to write to Health Connect without specifying any zone offset information, which must be avoided whenever possible.

Time and zone setting

Specifying zone offset information while writing data provides time zone information when reading data in Health Connect. However, it may fail to do so in certain situations, such as when the zone offset isn't provided. Your app needs to be prepared to deal with both kinds of data, in a way that makes sense for your specific circumstances.