Health Connect

  
Allows developers to read or write user's health and fitness records.
Latest Update Stable Release Release Candidate Beta Release Alpha Release
September 18, 2024 - - - 1.1.0-alpha09

Requesting access to data types

To help us strengthen user privacy and security, developers integrating with Health Connect must declare read and/or write access for the data types that their apps use. Developers must include valid use cases for the data types they use based on the app's purpose. For more information, visit Provide information for the Health apps declaration form and Health Connect by Android Permissions.

Declaring dependencies

To add a dependency on health, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.

Add the dependencies for the artifacts you need in the build.gradle file for your app or module:

Groovy

dependencies {
    // Use to implement health connects
    implementation "androidx.health.connect:connect-client:1.1.0-alpha09"
}

Kotlin

dependencies {
    // Use to implement health connects
    implementation("androidx.health.connect:connect-client:1.1.0-alpha09")
}

For more information about dependencies, see Add build dependencies.

Feedback

Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.

Create a new issue

See the Issue Tracker documentation for more information.

Health Connect Testing Version 1.0

Version 1.0.0-alpha01

September 4, 2024

androidx.health.connect:connect-testing:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits.

New Features

The Health Connect Testing library simplifies the creation of automated tests. You can use this library to verify the behavior of your application and validate that it responds correctly to uncommon cases, which are hard to test manually.

You can use the library to create local unit tests, which typically verify the behavior of the classes in your app that interact with the Health Connect client.

The entry point to the library is the FakeHealthConnectClient class, which you use in tests to replace the HealthConnectClient. It has the following features:

  • An in-memory representation of records, so you can insert, remove, delete and read them
  • Generation of change tokens and change tracking
  • Pagination for records and changes
  • Aggregation responses are supported with stubs
  • Allows any function to throw exceptions
  • A FakePermissionController that can be used to emulate permissions checks

API Changes

  • Add FakeHealthConnectClient e8469
  • Add Stub overrides for FakeHealthConnectClient e8469

Version 1.1

Version 1.1.0-alpha09

September 18, 2024

androidx.health.connect:connect-client:1.1.0-alpha09, androidx.health.connect:connect-client-external-protobuf:1.1.0-alpha09, and androidx.health.connect:connect-client-proto:1.1.0-alpha09 are released. Version 1.1.0-alpha09 contains these commits.

New Features

  • Add background reads permission, guarded by feature availability. (I01036, I44db9)

Version 1.1.0-alpha08

September 4, 2024

androidx.health.connect:connect-client:1.1.0-alpha08, androidx.health.connect:connect-client-external-protobuf:1.1.0-alpha08, and androidx.health.connect:connect-client-proto:1.1.0-alpha08 are released. Version 1.1.0-alpha08 contains these commits.

API Changes

  • Set default value for features variable in HealthConnectClient. (I788dc)
  • Add an API to check feature availability. (Iedd43)

Bug Fixes

  • Return SDK_UNAVAILABLE in HealthConnectClient.getSdkStatus() when HealthConnectManager is null in U+ 5802f
  • Add toString overrides to RecordClasses aa5dc
  • Removed manual outlining of access to new platform APIs since this happens automatically via API modeling when using R8 with AGP 7.3 or later (e.g. R8 version 3.3) and for all builds when using AGP 8.1 or later (e.g. D8 version 8.1). Clients who are not using AGP are advised to update to D8 version 8.1 or later. See this article for more details. (If6b4c, b/345472586)

Version 1.1.0-alpha07

January 10, 2024

androidx.health.connect:connect-client:1.1.0-alpha07 is released. Version 1.1.0-alpha07 contains these commits.

API Changes

  • Return SDK_UNAVAILABLE when #getSdkStatus is called from a profile user context. (I91df3)
  • Remove SleepStageRecord. (/If6ada)

Bug Fixes

  • Throw RemoteException instead of IllegalStateException on binding failures. (Id2233)

Version 1.1.0-alpha06

October 18, 2023

androidx.health.connect:connect-client:1.1.0-alpha06 is released. Version 1.1.0-alpha06 contains these commits.

API Changes

  • Makes recordingMethod definitions public. (I401fb)

Bug Fixes

  • Add documentation to exercise route specifying that location should be before end time of the session. (0e51e6)

Version 1.1.0-alpha05

October 4, 2023

androidx.health.connect:connect-client:1.1.0-alpha05 is released. Version 1.1.0-alpha05 contains these commits.

API Changes

  • Added intent that navigates to health connect data management screen. (Ibf591)
  • Removed deprecated methods in AggregationResult. (Idbda9)
  • Added convenience API for creating ReadRecordsRequest, as well as deleting and reading records, with a reified record type. (If58a5)

Bug Fixes

  • Fixed a bug in Android 14 where null nutrition fields were being returned as Double.MIN_VALUE. (1aa1d1)
  • Fixed a bug in Android 14 where aggregation by Monthly/Yearly period was throwing an exception in the response due to buckets having the same start/end time. (281313)

Version 1.1.0-alpha04

September 6, 2023

androidx.health.connect:connect-client:1.1.0-alpha04 is released. Version 1.1.0-alpha04 contains these commits.

API Changes

Bug Fixes

Version 1.1.0-alpha03

July 26, 2023

androidx.health.connect:connect-client:1.1.0-alpha03 is released. Version 1.1.0-alpha03 contains these commits.

New Features

  • API for reading and writing Exercise routes:
    • Added ExerciseRouteResult to ExerciseSessionRecord
    • Added ExerciseRouteRequestContract

API Changes

  • Added ExerciseRouteResult and its subclasses: Data, NoData and ConsentRequiredStates.
  • Added ExerciseRoute as a standalone class, which holds location data for the route. (I22eed)
  • Added PERMISSION_WRITE_EXERCISE_ROUTE. (I92fc4)
  • Added ExerciseRouteRequestContract, added HealthPermissionsRequestContract. (Ief0e5)

Bug Fixes

  • Fixed construction of Energy in kilojoules (Ie8791)

Version 1.1.0-alpha02

June 21, 2023

androidx.health.connect:connect-client:1.1.0-alpha02 is released. Version 1.1.0-alpha02 contains these commits.

Bug Fixes

  • Fixed HealthDataSdkService leak (Ia3ba5)
  • Always redirect to the right HealthConnect Client when requesting permissions on Android U.(I6415a)

Version 1.1.0-alpha01

June 7, 2023

androidx.health.connect:connect-client:1.1.0-alpha01 is released. This version is developed in an internal branch.

New Features

  • Support for the Android 14 framework version of Health Connect. This SDK is a prerequisite for Android 14. Apps will not be able to integrate with Health Connect on Android 14 without it.
  • Added recording method to record metadata.

API Changes

  • Session API changes:
    • Added various sleep stages into SleepSessionRecord and removed SleepStageRecord.
    • Added ExerciseLap and ExerciseSegment into ExerciseSessionRecord.
  • Periodic and daily rate limits (including memory limits), for read, changelog, insertion and deletion operations.
  • Added validation for all NutritionRecord fields.
  • Added validation for HeartRateVariabilityRmssdRecord.
  • Removed two deprecated APIs: HealthConnectClient#isProviderAvailable and HealthConnectClient#isApiSupported.

Bug Fixes

  • Fixed units equality for all unit types, equality no longer depends on type used for unit initialization. E.g. Mass.grams(1000) is now equal to Mass.kilograms(1).

Version 1.0

Version 1.0.0-alpha11

February 22, 2023

androidx.health.connect:connect-client:1.0.0-alpha11 is released. Version 1.0.0-alpha11 contains these commits.

API Changes

  • Adding an intent to use for opening Health Connect. (Ic8055)
  • Removing some exercise types. Use EXERCISE_TYPE_STRENGTH_TRAINING, EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING or EXERCISE_TYPE_CALISTHENICS in place of the removed types. (I7291c)
  • Adding new API sdkStatus() that combines the two now deprecated APIs isSdkSupported() and isProviderAvailable(). (Iac89d)
  • Changing APIs that accept providerPackageName to accept a single string rather than a list. (I67e0f)

Version 1.0.0-alpha10

January 25, 2023

androidx.health.connect:connect-client:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.

API Changes

  • ExerciseEventRecord, ExerciseLapRecord,ExerciseRepititionRecord and SwimmingStrokesRecord are no longer supported as RecordTypes. They can no longer be written or read from HealthConnect. Remove any reference to these data types from the HealthConnect integration. (If7ca2)
  • Changes in permissions APIs to accept permissions in a new string based format. This change also requires changing permission declaration to the standard android permissions format. (Ib0a2f)

Version 1.0.0-alpha09

January 11, 2023

androidx.health.connect:connect-client:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.

New Features

  • Added 2 new female health datatypes for Health Connect: IntermenstrualBleedingRecord, and MenstruationPeriodRecord. MenstruationFlow.ENUMs are Light, Medium, Heavy, and Unknown.

API Changes

  • Added IntermenstrualBleedingRecord (Idc470)
  • Added MenstruationPeriodRecord record type (Iea545)

Version 1.0.0-alpha08

December 7, 2022

androidx.health.connect:connect-client:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.

API Changes

  • Adds BodyWaterMass, HeartRateVariabilityRmssdRecord as new supported Record Types. (Ifd58f)
  • Removes HipCircumferenceRecord, WaistCircumferenceRecord as supported RecordTypes. (I62fb9)
  • Changed MenstruationFlowRecord.flow from stringdef to intdefs. (I0369f)
  • Changed enum-like Record fields with Strings to Integers for better performance. (I3b295)
  • Changed ExerciseSession, ExerciseRepetitions, SleepStage enum-like fields from string to integer types. (Id32a9)
  • Renamed ExerciseSessionRecord.ACTIVE_TIME_TOTAL->EXERCISE_DURATION_TOTAL. (I5d7bd)
  • Adds "Unusual" to CervicalMucus enums. Rename "Clear" to "Eggwhite" for more specificity. Changed CervicalMucus#appearance and #sensation from StringDefs to IntDefs. (I3ac51)
  • StringDef of DeviceTypes enum is now moved into IntDefs under Device. (I3abf3)
  • Adds HealthConnectClient.isApiSupported(), which returns false on SDK versions with no compatible implementations. Renamed HealthConnectClient.isAvailable->isProviderAvailable. (I3674e)

Bug Fixes

  • Disallow HeartRate beatsPerMinute values less than 1 (I6052f)
  • Adding @JvmDefaultWithCompatibility annotation (I8f206)

Version 1.0.0-alpha07

October 24, 2022

androidx.health.connect:connect-client:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.

API Changes

  • Record arguments without default values are placed before arguments with default values. For consistency, Instant and ZoneOffset arguments are always placed at the very beginning. (Id618c)
  • Rename HealthConnectClient.getOrCreate#packageNames to providerPackageNames. (Id81e4)

Bug Fixes

  • Adds Record field value validations. Extremely wrong values will throw IllegalArgumentExceptions when provided value is out of reasonable bounds. (Ie171d)
  • Validates record start time before end time where relevant. (I02460)

Version 1.0.0-alpha06

October 5, 2022

androidx.health.connect:connect-client:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.

Bug Fixes

  • Improves service connection lifecycle. (If2bd5)
  • Fix an NPE crash bug when exception raised in service connection. (I13546)

Version 1.0.0-alpha05

September 21, 2022

androidx.health.connect:connect-client:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.

API Changes

  • Renamed Metadata.uid -> Metadata.id and used the terminology recordId consistently throughout related CRUD APIs. (I3d1d2)
  • Made PermissionController.createRequestPermissionActivityContract a static method instead of an instance method. Renamed to PermissionController.createRequestPermissionResultContract. (Icd2fe)
  • Added BloodGlucose unit type for BloodGlucoseRecord (I97678)
  • Rename MenstruationRecord -> MenstruationFlowRecord. (I3b88e)

Bug Fixes

  • Fix unintended behavior not propagating foreground stats from client process. (Ifb44c)

Version 1.0.0-alpha04

August 24, 2022 androidx.health.connect:connect-client:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits.

Migration to `androidx.health.connect

As of 1.0.0-alpha04, androidx.health:health-connect-client was migrated to androidx.health.connect:connect-client. For previous versions of Health Connect, please visit the androidx.health page.

To migrate, simply change your dependency import from androidx.health:health-connect-client:1.0.0-alpha03 to androidx.health.connect:connect-client:1.0.0-alpha04.

New Features

  • Included optional debug logs builtin for API calls (link)

API Changes

  • Renamed Metadata clientId to clientRecordId, clientVersion to clientRecordVersion. (link)
  • Made Metadata uid more friendly to readers, no longer nullable. (link)
  • Added pounds to Mass unit (link)
  • Renamed DeletionChange.deleteUid to uid (link)
  • Rename Permission -> HealthPermission. This avoids ambiguity with Android Framework permissions. (link)

Bug Fixes

  • Fixed regression issues with incorrect calories unit with Energy (link)
  • Fixed regression issue with aggregation for few record types (link)