You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端读取Wear OS三星Watch 5健康数据的技术困惑

读取三星Watch 5健康数据的解决方案

一、Google Fit API vs Health Connect:选择建议

  • 优先使用Health Connect:它是Android官方推出的统一健康数据交互框架,目前三星健康已全面支持将手表同步到手机的健康数据同步至Health Connect,是当前对接三星设备健康数据的最优方案。
  • Google Fit API:更多面向Google Fit生态,对于三星健康数据的兼容性和获取效率不如Health Connect直接对接,不推荐作为首选。

二、为什么官方示例读不到三星健康数据?

  1. 三星健康未开启同步:默认情况下,三星健康不会主动将数据同步到Health Connect,需要用户手动开启同步权限。
  2. 示例应用的局限性:官方Health Connect示例仅演示基础的读写逻辑,默认仅操作自身生成的测试数据,未配置读取第三方应用(如三星健康)同步数据的权限和查询逻辑。

三、具体实现步骤

1. 配置权限与依赖

  • 在AndroidManifest.xml中声明所需的健康数据读取权限:
    <uses-permission android:name="android.permission.health.READ_STEPS" />
    <uses-permission android:name="android.permission.health.READ_HEART_RATE" />
    <!-- 根据需求添加其他权限,如READ_SLEEP、READ_ACTIVE_CALORIES等 -->
    
  • 在模块build.gradle中添加Health Connect Jetpack依赖:
    dependencies {
        implementation "androidx.health.connect:connect-client:1.1.0"
    }
    

2. 检查Health Connect可用性并申请权限

  • 先验证设备是否支持Health Connect:
    val healthConnectClient = HealthConnectClient.getOrCreate(context)
    when (healthConnectClient.sdkStatus) {
        SdkStatus.AVAILABLE -> {
            // 继续后续流程
        }
        SdkStatus.REQUIRES_UPDATE -> {
            // 提示用户升级Health Connect
        }
        SdkStatus.NOT_INSTALLED -> {
            // 引导用户安装Health Connect
        }
    }
    
  • 申请读取权限:
    val requiredPermissions = setOf(
        Permission.createReadPermission(StepsRecord::class),
        Permission.createReadPermission(HeartRateRecord::class)
    )
    val requestContract = HealthConnectClient.requestPermissionsContract()
    startActivityForResult(
        requestContract.createIntent(context, requiredPermissions),
        HEALTH_PERMISSION_REQUEST_CODE
    )
    

3. 查询同步后的健康数据

权限通过后,即可查询Health Connect中存储的三星健康数据(需确保三星健康已开启同步):

val timeRange = TimeRangeFilter.between(
    Instant.now().minus(Duration.ofDays(1)), // 过去24小时
    Instant.now()
)
// 查询步数数据
val stepsRequest = ReadRecordsRequest(
    recordType = StepsRecord::class,
    timeRangeFilter = timeRange
)
val stepsResponse = healthConnectClient.readRecords(stepsRequest)
val totalSteps = stepsResponse.records.sumOf { it.count }

// 查询心率数据
val heartRateRequest = ReadRecordsRequest(
    recordType = HeartRateRecord::class,
    timeRangeFilter = timeRange
)
val heartRateResponse = healthConnectClient.readRecords(heartRateRequest)
val heartRateSamples = heartRateResponse.records.flatMap { it.samples }

4. 引导用户开启三星健康同步

必须让用户完成以下操作:
打开三星健康APP → 进入「我的」页面 → 点击「设置」 → 选择「数据同步」 → 找到「Health Connect」 → 开启需要同步的健康数据类型(如步数、心率、睡眠等)。

内容的提问来源于stack exchange,提问作者M. Usman Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:31:21