健康

  
以平台无关的方式创建高性能的健康应用。
最新更新 稳定版 候选发布版 Beta 版 Alpha 版
2025 年 5 月 7 日 1.0.0 - - 1.1.0-alpha05

声明依赖项

要添加对 Health 的依赖项,您必须将 Google Maven 代码库添加到您的项目中。如需了解详情,请阅读 Google 的 Maven 代码库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项

Groovy

dependencies {
    implementation "androidx.health:health-services-client:1.1.0-alpha05"
}

Kotlin

dependencies {
    implementation("androidx.health:health-services-client:1.1.0-alpha05")
}

反馈

您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星形按钮为您已有的问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

Health Connect Client 1.0 版

1.0.0-alpha04 版

2022 年 8 月 24 日

从 1.0.0-alpha04 版本开始,androidx.health:health-connect-client 已迁移到 androidx.health.connect:connect-client。对于未来的发布版本,请使用 androidx.health.connect:connect-client 以及我们健康连接页面上的相关发布说明。

要进行迁移,只需将您的依赖项导入从 androidx.health:health-connect-client:1.0.0-alpha03 更改为 androidx.health.connect:connect-client:1.0.0-alpha04

1.0.0-alpha03 版

2022 年 7 月 27 日

androidx.health:health-connect-client:1.0.0-alpha03 已发布。1.0.0-alpha03 版本包含这些提交。

新功能

  • 新 API 更改摘要:读、写、聚合 API 中增加了一组单位。应用现在可以使用自己选择的单位(例如,NutritionRecord 营养素的克或毫克)检索或写入记录。

API 变更

  • List<DataOrigin> 修复为所有各种请求响应对象中的 Set<DataOrigin>。(I42342
  • 将基础总热量的单位从 Power->Energy 修正。(I0b429
  • 将系列样本类移到系列记录中(Ica9bb
    • CyclingPedalingCadence -> CyclingPedalingCadenceRecord.Sample
    • HeartRate -> HeartRateRecord.Sample
    • StepsCadence -> StepsCadenceRecord.Sample
  • 弃用 HealthDataRequestPermission 类,转而使用 PermissionController.createRequestPermissionActivityContract;这有助于提高可发现性和统一参数化。(I81e7f
  • 向 Volume 添加了美制液体盎司。(I5f03d
  • 添加了速度单位类型(I1d574
  • 添加了百分比单位类型(I08f23
  • 添加了压力单位类型(Ifb01f
  • 添加了质量单位类型(Ifd81a
  • 添加了体积单位类型(I59ad1
  • 添加了功率单位类型。将功率系列样本类移到 PowerRecord 类中。(I5b1e5
  • 添加了能量单位类型(I983ae
  • 添加了温度单位类型(I4cdb5
  • 将 Activity 的引用重命名为特定于 Exercise 的引用,包括(I3f936
    • ActivityLap 重命名为 ExerciseLapRecord
    • ActivityEvent 重命名为 ExerciseEventRecord
    • Repetitions 重命名为 ExerciseRepetitionsRecord
    • ActivitySession 重命名为 ExerciseSessionRecord
  • 将包元数据嵌套在记录下。(Ie0835
  • 在所有剩余记录中使用长度单位(Ib10dd
    • ActivityLapRecord
    • ElevationGainedRecord
    • HeightRecord
    • HipCircumferenceRecord
    • WaistCircumferenceRecord
  • 添加了长度单位类型(Idae39
  • 更新 CervicalMucus 描述术语(I25a2b
    • CervicalMucus.Amount -> CervicalMucusRecord.Texture
    • CervicalMucus.Appearance -> CervicalMucusRecord.Sensation
  • 为所有记录类名添加了“Record”后缀(I1ffc2

Bug 修复

  • 修复了在发布版本和 minifyEnabled true 的情况下构建库时出现的 proguard 问题。(I78933
  • 隐藏不供公开使用的文档。(I7a08f
  • 修复了客户端可能拥有自己的 protobuf 依赖项的问题。(https://android-review.googlesource.com/c/platform/frameworks/support/+/2105430)

1.0.0-alpha02 版

2022 年 6 月 1 日

androidx.health:health-connect-client:1.0.0-alpha02 已发布。1.0.0-alpha02 版本包含这些提交。

API 变更

  • 已弃用 AggregationResult 中的 hasMetricgetMetric,添加了 contains 和 get 运算符(I7cc7c
  • 添加 OvulationTest.Result.HIGHOvulationTest.Result.INCONCLUSIVE。(I9f9c4

Bug 修复

  • 将 SDK 要求降低到 26。(I6d201

1.0.0-alpha01 版

2022 年 5 月 11 日

androidx.health:health-connect-client:1.0.0-alpha01 已发布。1.0.0-alpha01 版本包含这些提交。

新功能

  • 用于读取其他应用共享的健身和健康记录的 API。
  • 用于写入健身和健康记录以与其他应用共享的 API。
  • 用于检索可访问记录的聚合指标的 API。
  • 用于检索其他应用对记录的增量更改(插入、更新或删除)的 API。
  • 用于提示用户授予健康权限的 API。
  • 用于检查权限或撤销已授予健康权限的 API。

Health Services Client 1.1 版

1.1.0-alpha05 版

2024 年 12 月 11 日

androidx.health:health-services-client:1.1.0-alpha05androidx.health:health-services-client-external-protobuf:1.1.0-alpha05androidx.health:health-services-client-proto:1.1.0-alpha05 已发布。1.1.0-alpha05 版本包含这些提交

新功能

  • 现在包含 proguard 规则,以避免剥离不必要的类。(65d0c3f

Bug 修复

  • 此库现在使用 JSpecify 空值注释,它们是类型使用。Kotlin 开发者应使用以下编译器参数强制正确使用:-Xjspecify-annotations=strict(这是 Kotlin 编译器 2.1.0 版本开始的默认设置)。(Iaf73a, b/326456246)

1.1.0-alpha04 版

2024 年 10 月 16 日

androidx.health:health-services-client:1.1.0-alpha04androidx.health:health-services-client-external-protobuf:1.1.0-alpha04androidx.health:health-services-client-proto:1.1.0-alpha04 已发布。1.1.0-alpha04 版本包含这些提交

安全修复

  • 此更改起,androidx 针对 protobuf 4.28.2 进行编译,以解决 CVE-2024-7254。将您的 androidx.health:health-services-client 依赖项升级到最新的 1.1.0-alpha04 以解决漏洞风险。

1.1.0-alpha02 版

2023 年 12 月 13 日

androidx.health:health-services-client:1.1.0-alpha02 已发布。1.1.0-alpha02 版本包含这些提交。

API 变更

  • 为受支持的 ExerciseEvent 使用单一事实来源。(I03308

Bug 修复

  • 次要错误修复和文档改进。

1.1.0-alpha01 版

2023 年 8 月 9 日

androidx.health:health-services-client:1.1.0-alpha01 已发布。1.1.0-alpha01 版本包含这些提交。

新功能

  • 除了第一个具体事件 GolfShotEvent 之外,还添加了 ExerciseEvent API。ExerciseEvent 原语使开发者能够查询支持并请求在手表检测到事件发生时收到通知。例如,GolfShotEvent 允许开发者在用户挥杆击球时收到通知,并接收识别到的挥杆类型。

API 变更

  • 启用 WHS SDK 客户端使用 GolfShotEvent 功能。(I76b03

Bug 修复

  • 在看到未知的运动事件功能时,不是主动抛出异常,而是将其从列表中过滤掉。(I06afc

Health Services Client 1.0 版

1.0.0 版

2025 年 5 月 7 日

androidx.health:health-services-client:1.0.0 已发布。1.0.0 版本包含这些提交

1.0.0 的主要功能

  • 这是 1.0.0-rc02 的升级版,成为 Health Services Client 的稳定版。与 1.0.0-rc02 相比没有变化。

1.1.0-alpha03 版

2024 年 5 月 14 日

androidx.health:health-services-client:1.1.0-alpha03 已发布。1.1.0-alpha03 版本包含这些提交

新功能

  • 引入了 DebouncedGoal API,允许在运动期间跟踪样本数据类型或统计样本数据类型目标,并具有去抖功能(initialDelaydurationAtThreshold)。(I09be9)
  • 添加了以下高级跑步指标样本和统计 DataTypes。(I0b8b5
    • 触地时间
    • 垂直振幅
    • 垂直比
    • 步幅

API 变更

  • 添加了 ELEVATION_GAIN_DAILY DataType。(I059d1
  • 添加了 SWIM_LAP_COUNT_TOTAL DataType 作为 SWIM_LAP_COUNT 的聚合 DataType。(I0beeb

Bug 修复

  • 修复了各种问题以提高 IPC 可靠性。

1.0.0-rc02 版

2024 年 4 月 3 日

androidx.health:health-services-client:1.0.0-rc02 已发布。1.0.0-rc02 版本包含这些提交。这是一个仅包含错误修复的发布版本,不包含 API 更改。

Bug 修复

  • 修复了各种问题以提高 IPC 可靠性
  • 修复了同时调用 startExerciseprepareExercise 可能会导致 ConcurrentModificationException 的问题 (4e37773)
  • 改进了文档

1.0.0-rc01 版

2023 年 7 月 26 日

androidx.health:health-services-client:1.0.0-rc01 已发布。1.0.0-rc01 版本包含这些提交。

新功能

  • Health Services 在 beta 版中稳定后已迁移到 1.0.0-rc01。

API 变更

  • 合并了 h- 到 m- 路径的公共和实验性 API 文件。(Ic4630, b/278769092
  • 不适用,API 文件更改只是方法的重新排序。(I5fa95

1.0.0-beta03 版

2023 年 4 月 5 日

androidx.health:health-services-client:1.0.0-beta03 已发布。1.0.0-beta03 版本包含这些提交。

新功能

BatchingMode 现在可以配置为在主动运动期间以配置的时间间隔(而不是默认值)传递批处理的运动数据,无论是在运动开始时通过 ExerciseConfig 还是在运动期间通过覆盖方法。此功能的支持将由 Google Play 商店即将发布的 Health Services 版本启用,并且可以通过运动功能进行检查。注意:批处理模式在设备处于非交互式电源状态时生效,并将导致功耗增加。

API 变更

  • 当 suspend 函数 overrideBatchingModesForActiveExercise 失败时抛出 HealthServicesException。(Ifd387
  • 为异步 overrideBatchingModesForActiveExercise API 引入了 suspend 函数,使其更符合 Kotlin 习惯(I7dd15
  • ExerciseConfig 中的 BatchingMode 覆盖是可选的(Id22e9

Bug 修复

  • DataTypeExerciseUpdate 的小幅修复 (5e185f)

1.0.0-beta02 版

2023 年 1 月 11 日

androidx.health:health-services-client:1.0.0-beta02 已发布。1.0.0-beta02 版本包含这些提交。

新功能

  • ExerciseClientPassiveMonitoringClientMeasureClient 中现有异步 ListenableFuture API 添加了 suspend 扩展函数,以提供更好的 Kotlin 支持。(Iadea4
  • 添加了 ExerciseTypeConfig API,支持在正在进行的锻炼期间进行更新。添加了 GolfExerciseTypeConfig,以支持在高尔夫锻炼期间更新 ExerciseTypeConfig。(I4c539

API 变更

  • 在 suspend 函数上抛出 HealthServicesExceptionI5e509
  • 添加另一个构造函数以实现向后兼容性(Iddeda
  • 在 suspend 函数上抛出 RuntimeExceptionI53bca
  • 移除抛出 Exception 的默认实现(Id947f
  • 添加 @JvmDefaultWithCompatibility 注解(I8f206

Bug 修复

  • 为清晰起见添加到 kdoc(Ide285
  • 仅当跟踪相同数据类型时,才允许对目标进行被动监控跟踪(Ibed8d

1.0.0-beta01 版

2022 年 10 月 24 日

androidx.health:health-services-client:1.0.0-beta01 已发布。1.0.0-beta01 版本包含这些提交。

新功能

  • 增加了通过 PassiveMonitoringClient 监听健康事件的功能,第一个事件是:HealthEvent.FALL_DETECTED

  • 新的运动类型

    • ALPINE_SKIING(高山滑雪)
    • BACKPACKING(背包旅行)
    • CROSS_COUNTRY_SKIING(越野滑雪)
    • HORSE_RIDING(骑马)
    • INLINE_SKATING(轮滑)
    • MOUNTAIN_BIKING(山地自行车)
    • ORIENTEERING(定向越野)
    • ROLLER_SKATING(轮滑)
    • YACHTING(帆船运动)
  • 新的数据类型

    • ELEVATION_LOSS(海拔下降)
    • GOLF_SHOT_COUNT(高尔夫击球计数)

API 变更

  • 更新了数据建模方式:数据模型以及 DataTypeDataPoint 及其底层值的表示方式已进行了全面改革。最主要的影响是 API 现在更加明确且类型安全。
  • 位置 DataPoint 不再表示为 DoubleArray,而是表示为强类型 LocationData 对象。
  • 迁移到一套新的被动监听器 API
    • 广播已被 PassiveListenerService 取代。
    • 现有监听器已被单个监听器取代:PassiveListenerCallback
  • 为 Health Services 清单添加了 <queries> 标记,这样应用就不再需要在自己的清单中指定此标记(前提是其构建系统中开启了清单合并)。
  • 放弃了许多 ExerciseState 来表示锻炼正在结束/已结束,并添加了新的锻炼状态 ENDINGENDED。这些状态现在与 ExerciseEndReason 结合使用,以表示之前所有状态的完整范围。
  • PassiveListenerConfigsetPassiveGoals 重命名为 setDailyGoals,以更好地反映我们仅支持每日被动目标。
  • PassiveGoal 现在始终是 REPEATED,被动 TriggerFrequency 已移除。
  • 所有 LongDouble 参数都用 @FloatRange 注解。
  • ExerciseConfig 添加了 swimmingPoolLengthMeters 属性,该属性可选择指定以改进泳池游泳的距离计算。
  • 已弃用 ExerciseUpdate.activeDuration。请改用 ExerciseUpdate.activeDurationCheckpoint
  • ExerciseClient 中的 API flushExerciseAsync() 重命名为 flushAsync()
  • Measure.registerCallback 重命名为 Measure.registerMeasureCallback
  • 一般命名更改
    • 距离属性现在带有 meters 后缀。
    • 回调方法名称现在使用过去式。
    • 大多数缩写已被移除(HrAccuracy 现在是 HeartRateAccuracy。)
    • 遵循 enableFoo 模式的属性现在命名为 isFooEnabled
  • 已从枚举迁移。
  • Double 表示的时间现在由 Duration 表示。
  • 返回 ListenableFuture<Void?> 的函数现在返回 ListenableFuture<Void>
  • 接受回调的函数现在总是将回调作为最后一个参数出现。
  • 带有构建器的类现在也总是有公共构造函数。
  • 注册函数不再返回 ListenableFuture,而是将注册状态传递给提供的回调。
  • KDocs 现已得到改进。
  • 公共类不再扩展 ProtoParcelable

Bug 修复

  • IPC 可靠性总体改进(I3b1e2

1.0.0-alpha03 版

2021 年 11 月 3 日

androidx.health:health-services-client:1.0.0-alpha03 已发布。1.0.0-alpha03 版本包含这些提交。

新功能

  • 如果与 Health Services APK 的 IPC 连接断开,SDK 将自动重新注册测量、运动监听器和被动监控回调注册请求。

API 变更

  • SDK 库的 minSdkVersion 已提升到 API 级别 30,因为 Health Services Client 当前仅在 Wear3 上受支持。

1.0.0-alpha02 版

2021 年 9 月 29 日

androidx.health:health-services-client:1.0.0-alpha02 已发布。1.0.0-alpha02 版本包含这些提交。

API 变更

  • ExerciseClient 现在支持准备运动。这允许客户端预热传感器并等待 GPS 定位等,然后才开始运动。
  • 引入了 CumulativeDataPoints 和 StatisticalDataPoints AggregateDataPoint 类,以更好地建模主动锻炼期间跟踪的聚合指标。CumulativeDataPoints 包含聚合间隔数据类型的累积值(例如锻炼期间的总距离),而 StatisticalDataPoints 建模采样数据点的聚合(例如最小、最大和平均心率)。这取代了以前的 AGGREGATE_* 数据类型,可以通过 getLatestAggregateMetrics() 在 ExerciseUpdate 中访问。AGGREGATE_* 数据类型不再受支持。
  • PassiveMonitoring 事件已重命名为 PassiveGoals,它支持设置目标并在达到这些目标时接收通知,适用于每日指标(即 DAILY_STEPS)等数据类型。
  • 通过引入新的 HrAccuracy、LocationAccuracy 和 LocationAvailability 类,改进了心率和位置精度及可用性的建模。
  • 改进了 ExerciseConfig 和新的 PassiveMonitoringConfig 字段的命名,并引入了 ExerciseConfig.shouldEnableGps 以请求基于 GPS 的数据

Bug 修复

  • 迁移到基于 proto 的 IPC 传输,以提供更好的向后兼容性支持

1.0.0-alpha01 版

2021 年 5 月 18 日

androidx.health:health-services-client:1.0.0-alpha01 已发布。1.0.0-alpha01 版本包含这些提交。

初始发布功能

Health Services 库为开发者提供了一套统一的 API,用于与设备特定的传感器实现集成。它将与 Wear OS 3 模拟器和即将推出的设备开箱即用,未来还将支持更多平台。此初始版本中包含三个顶级 API 界面:ExerciseClientPassiveMonitoringClientMeasureClient

ExerciseClient

ExerciseClient 专为跟踪主动锻炼的应用而设计,支持多达 82 种不同的 ExerciseType,从步行、跑步到舞蹈和水球。在跟踪这些锻炼时,有 50 种不同的 DataType 可供选择,具体取决于锻炼类型和设备上可用的硬件。要开始使用,只需在 ExerciseConfig 中指定相关信息,调用 exerciseClient.startExercise 并监听更新监听器上的进度。

PassiveMonitoringClient

如果您的应用全天跟踪用户活动,PassiveMonitoringClient 是一个不错的选择。您可以注册一个包含一组 DataTypePendingIntent,并在批量更改发生时被唤醒进行处理。或者,您可以指定一个 Event,例如达到一定步数。

MeasureClient

有时用户需要在当前测量,例如心率,而不是在锻炼期间或全天。在这种情况下,MeasureClient 是完美的选择。您只需使用支持的 DataType 注册您的回调,即可接收数据流,并在不再需要时取消注册您的回调。