健康
最近更新时间 | 稳定版 | 候选版 | 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-client
和 Health 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
中的hasMetric
和getMetric
,添加了包含和获取运算符 (I7cc7c) - 添加
OvulationTest.Result.HIGH
和OvulationTest.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-alpha05
、androidx.health:health-services-client-external-protobuf:1.1.0-alpha05
和 androidx.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-mode
(Iaf73a、b/326456246)
版本 1.1.0-alpha04
2024 年 10 月 16 日
发布了 androidx.health:health-services-client:1.1.0-alpha04
、androidx.health:health-services-client-external-protobuf:1.1.0-alpha04
和 androidx.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,可让您在运动期间使用去抖功能(initialDelay
和durationAtThreshold
)跟踪样本数据类型或统计数据样本数据类型的目标。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 可靠性
- 修复了同时调用
startExercise
和prepareExercise
可能会导致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 文件。(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 商店中即将发布的健康服务版本将支持此功能,您可以通过锻炼功能进行检查。注意:批处理模式会在设备处于非交互式电源状态时生效,并且会导致功耗增加。
API 变更
- 在挂起函数
overrideBatchingModesForActiveExercise
失败时抛出HealthServicesException
(Ifd387) - 为异步
overrideBatchingModesForActiveExercise
API 引入了挂起函数,使其更易于使用 Kotlin (I7dd15) BatchingMode
替换了ExerciseConfig
中的可选项 (Id22e9)
bug 修复
DataType
和ExerciseUpdate
中的小修复 (5e185f)
版本 1.0.0-beta02
2023 年 1 月 11 日
发布了 androidx.health:health-services-client:1.0.0-beta02
。版本 1.0.0-beta02 中包含这些提交内容。
新功能
- 为
ExerciseClient
、PassiveMonitoringClient
和MeasureClient
中的现有异步ListenableFuture
API 添加了suspend
扩展函数,以更好地支持 Kotlin。(Iadea4) - 添加了
ExerciseTypeConfig
API,可在持续锻炼期间实现更新。添加了GolfExerciseTypeConfig
,以支持在高尔夫锻炼期间更新ExerciseTypeConfig
。(I4c539)
API 变更
- 对挂起函数抛出
HealthServicesException
(I5e509) - 添加了另一个构造函数以实现向后兼容性 (Iddeda)
- 对挂起函数抛出
RuntimeException
(I53bca) - 移除了抛出异常的默认实现 (Id947f)
- 添加了
@JvmDefaultWithCompatibility
注解 (I8f206)
bug 修复
版本 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 变更
- 更新了数据的建模方式:数据模型以及
DataType
、DataPoint
及其底层值的表示方式已全新改版。最主要的效果是,API 现在更明确,类型更安全。 - 位置
DataPoint
不再表示为DoubleArray
,而是表示为强类型的LocationData
对象。 - 已迁移至一组新的被动监听器 API:
- 广播已替换为
PassiveListenerService
。 - 现有的各种监听器已替换为单个监听器:
PassiveListenerCallback
。
- 广播已替换为
- 已向健康服务清单添加
<queries>
标记,因此应用无需再在自己的清单中指定此服务(前提是已在构建系统中启用清单合并)。 - 移除了很多表示锻炼即将结束/已结束的
ExerciseState
,并且添加了新的锻炼状态ENDING
和ENDED
。这些状态现在与ExerciseEndReason
相结合,用于表示先前的各种状态。 PassiveListenerConfig
setPassiveGoals
已重命名为setDailyGoals
,以更好地反映我们仅支持每日被动目标。PassiveGoal
现在始终为REPEATED
,移除了被动TriggerFrequency
。- 使用
@FloatRange
为所有Long
和Double
参数添加了注解。 - 向
ExerciseConfig
添加了swimmingPoolLengthMeters
属性,可视需要指定此属性,以提高泳池游泳的距离计算准确性。 - 废弃了
ExerciseUpdate.activeDuration
,已改用ExerciseUpdate.activeDurationCheckpoint
。 - 已将
ExerciseClient
中的 APIflushExerciseAsync()
重命名为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:ExerciseClient
、PassiveMonitoringClient
和 MeasureClient
。
ExerciseClient
ExerciseClient
是专为用于跟踪有效锻炼的应用而设计的,可提供多达 82 种不同的 ExerciseType
,例如步行、跑步、舞蹈和水球等。在跟踪这些锻炼时,有 50 种不同的 DataType
可供选择,具体取决于锻炼类型和设备上可用的硬件。如需开始使用,只需执行以下操作即可:在 ExerciseConfig
中指定相关信息,调用 exerciseClient.startExercise
并通过更新监听器监听进度。
PassiveMonitoringClient
如果您的应用可跟踪用户全天的活动,那么 PassiveMonitoringClient
是一个绝佳选择。您可以使用一组 DataType
注册一个 PendingIntent
,并唤醒此 intent 来处理批量更改。此外,您也可以指定 Event
,例如达到特定步数。
MeasureClient
有时,用户需要衡量当前的指标(例如心率),而不是锻炼时或全天的指标。在这些时候,MeasureClient
是绝佳选择。您只需通过支持的 DataType
注册回调来接收数据流即可;当不再需要回调时,请将其取消注册。