健康

  
通过平台无关的方式构建高性能健康应用。
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2024 年 12 月 11 日 - 1.0.0-rc02 - 1.1.0-alpha05

声明依赖项

如需添加 Health 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库

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

Groovy

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

Kotlin

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

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

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

Health Connect 客户端版本 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-clientHealth Connect 页面上的相关版本说明。

如需迁移,只需将依赖项导入从 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)
  • 为体积添加了美国液量盎司。(I5f03d)
  • 添加了速度单位类型 (I1d574)
  • 添加了百分比单位类型 (I08f23)
  • 添加了压力单位类型 (Ifb01f)
  • 添加了质量单位类型 (Ifd81a)
  • 添加了体积单位类型 (I59ad1)
  • 添加了功率单位类型。将功率系列示例类移到了 PowerRecord 类中。(I5b1e5)
  • 添加了能量单位类型 (I983ae)
  • 添加了温度单位类型 (I4cdb5)
  • 将 activity 的引用重命名为特定于锻炼的名称,包括 (I3f936):
    • ActivityLap 已重命名为 ExerciseLapRecord
    • ActivityEvent 已重命名为 ExerciseEventRecord
    • Repetitions 已重命名为 ExerciseRepetitionsRecord
    • ActivitySession 已重命名为 ExerciseSessionRecord
  • 移动了嵌套在 records 下的软件包元数据。(Ie0835)
  • 所有剩余记录中均使用长度单位 (Ib10dd):
    • ActivityLapRecord
    • ElevationGainedRecord
    • HeightRecord
    • HipCircumferenceRecord
    • WaistCircumferenceRecord
  • 添加了长度单位类型 (Idae39)
  • 更新了 CervicalMucus 说明术语 (I25a2b):
    • CervicalMucus.Amount -> CervicalMucusRecord.Texture
    • CervicalMucus.Appearance -> CervicalMucusRecord.Sensation
  • 为所有记录类名称添加了“Record”后缀 (I1ffc2)

bug 修复

  • 修复了使用发布变种构建 lib 且 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,添加了包含和获取运算符 (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,用于检查权限或撤消已授予的健康权限。

健康服务客户端版本 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 nullness annotations,即类型使用。Kotlin 开发者应使用以下编译器参数来强制执行正确的用法:-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-modeIaf73ab/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 修复

  • 修复了一些次要 bug 并改进了文档。

版本 1.1.0-alpha01

2023 年 8 月 9 日

发布了 androidx.health:health-services-client:1.1.0-alpha01版本 1.1.0-alpha01 中包含这些提交内容

新功能

  • 添加了 ExerciseEvent API 以及第一个具体事件:GolfShotEvent。借助 ExerciseEvent 基元,开发者可以在手表检测到某些情况时查询支持并请求收到通知。例如,GolfShotEvent 除了接收识别到的挥杆类型外,还可让开发者在用户击球时收到通知。

API 变更

  • 让 WHS SDK 客户端能够使用 GolfShotEvent 功能。(I76b03)

bug 修复

  • 在看到未知的锻炼活动功能时,不要过于激进地抛出异常,而应从列表中滤除该功能。(I06afc)

健康服务客户端版本 1.0

版本 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):
    • Ground Contact Time
    • Vertical Oscillation
    • Vertical Ratio
    • Stride Length

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 包含这些提交内容。这是仅包含 bug 修复的版本,不包含 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 中包含这些提交内容

新功能

  • 在 Beta 版稳定后,Health Services 已移至 1.0.0-rc01。

API 变更

  • 合并了 h 到 m 路径的公共 API 文件和实验性 API 文件。(Ic4630b/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 商店中即将发布的健康服务版本将支持此功能,您可以通过锻炼功能进行检查。注意:批处理模式会在设备处于非交互式电源状态时生效,并且会导致功耗增加。

API 变更

  • 在挂起函数 overrideBatchingModesForActiveExercise 失败时抛出 HealthServicesException (Ifd387)
  • 为异步 overrideBatchingModesForActiveExercise API 引入了挂起函数,使其更易于使用 Kotlin (I7dd15)
  • BatchingMode 替换了 ExerciseConfig 中的可选项 (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 变更

  • 对挂起函数抛出 HealthServicesException (I5e509)
  • 添加了另一个构造函数以实现向后兼容性 (Iddeda)
  • 对挂起函数抛出 RuntimeException (I53bca)
  • 移除了抛出异常的默认实现 (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
  • 已向健康服务清单添加 <queries> 标记,因此应用无需再在自己的清单中指定此服务(前提是已在构建系统中启用清单合并)。
  • 移除了很多表示锻炼即将结束/已结束的 ExerciseState,并且添加了新的锻炼状态 ENDINGENDED。这些状态现在与 ExerciseEndReason 相结合,用于表示先前的各种状态。
  • PassiveListenerConfig setPassiveGoals 已重命名为 setDailyGoals,以更好地反映我们仅支持每日被动目标。
  • PassiveGoal 现在始终为 REPEATED,移除了被动 TriggerFrequency
  • 使用 @FloatRange 为所有 LongDouble 参数添加了注解。
  • 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 中包含这些提交内容

新功能

  • 如果 IPC 与健康服务 APK 的连接中断,SDK 会自动重新注册测量、锻炼监听器和被动监控回调注册请求。

API 变更

  • SDK 库的 minSdkVersion 已提升为 API 级别 30,因为健康服务客户端目前仅在 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 模型会汇总采样数据点数据(例如 HeartRateBpm 最小值、最大值和平均值)。这取代了之前的 AGGREGATE_* 数据类型,并可在 ExerciseUpdate 中通过 getLatestAggregateMetrics() 进行访问。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 Surface:ExerciseClientPassiveMonitoringClientMeasureClient

ExerciseClient

ExerciseClient 是专为用于跟踪有效锻炼的应用而设计的,可提供多达 82 种不同的 ExerciseType,例如步行、跑步、舞蹈和水球等。在跟踪这些锻炼时,有 50 种不同的 DataType 可供选择,具体取决于锻炼类型和设备上可用的硬件。如需开始使用,只需执行以下操作即可:在 ExerciseConfig 中指定相关信息,调用 exerciseClient.startExercise 并通过更新监听器监听进度。

PassiveMonitoringClient

如果您的应用可跟踪用户全天的活动,那么 PassiveMonitoringClient 是一个绝佳选择。您可以使用一组 DataType 注册一个 PendingIntent,并唤醒此 intent 来处理批量更改。此外,您也可以指定 Event,例如达到特定步数。

MeasureClient

有时,用户需要衡量当前的指标(例如心率),而不是锻炼时或全天的指标。在这些时候,MeasureClient 是绝佳选择。您只需通过支持的 DataType 注册回调来接收数据流即可;当不再需要回调时,请将其取消注册。