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

如何将com.google.android.gms.fitness.service.FitnessSensorService迁移至Google Health?

迁移 com.google.android.gms.fitness.service.FitnessSensorService 到 Google Health(第三方BLE设备场景)

针对第三方BLE设备上传健身/健康数据的场景,直接替换原FitnessSensorService的方案如下:

1. 替换依赖与权限

  • 移除原Google Fit依赖:com.google.android.gms:play-services-fitness
  • 添加Health Connect客户端依赖:com.google.android.health.connect:health-connect-client:1.1.0(版本可按需更新)
  • 在AndroidManifest.xml中声明Health Connect权限:
    <uses-permission android:name="android.permission.health.WRITE_HEALTH_RECORDS" />
    <uses-permission android:name="android.permission.health.READ_HEALTH_RECORDS" />
    
  • 代码中动态申请上述权限(属于危险权限,需运行时授权)

2. 移除FitnessSensorService,重构数据上传逻辑

原FitnessSensorService的核心是接收BLE数据后通过Fit API提交,现在直接改用Health Connect客户端API写入数据,无需继承特定Service:

步骤1:初始化Health Connect客户端

先确保设备已安装Health Connect,否则需引导用户安装:

val healthConnectClient = try {
    HealthConnectClient.getOrCreate(context)
} catch (e: AvailabilityException) {
    // 处理未安装Health Connect的情况,比如跳转应用商店
    return
}

步骤2:映射BLE数据到Health Connect Record类型

根据原Fit数据类型,对应到Health Connect的标准Record:

  • 步数累计 → StepsRecord
  • 心率 → HeartRateRecord
  • 卡路里消耗 → ActiveCaloriesBurnedRecord
  • 体重 → WeightRecord

以心率数据为例,从BLE拿到数据后构造Record:

// 假设从BLE获取到心率值75bpm,时间戳为当前时刻
val currentTime = Instant.now()
val heartRateRecord = HeartRateRecord.Builder(
    InstantRange.of(currentTime, currentTime), // 单次测量的时间区间
    75.0 // 心率值
).build()

步骤3:写入数据到Health Connect

用异步方式提交数据,避免阻塞主线程:

CoroutineScope(Dispatchers.IO).launch {
    try {
        healthConnectClient.insertRecords(listOf(heartRateRecord))
        // 数据写入成功,可做后续处理
    } catch (e: Exception) {
        when (e) {
            is PermissionDeniedException -> // 权限不足,引导用户授权
            is IOException -> // 网络或存储错误
            else -> // 其他异常处理
        }
    }
}

3. 关键注意事项

  • 时间精度:Health Connect的Record要求精确的时间戳(Instant类型),累计数据(如步数)需指定正确的时间区间(开始/结束时间)
  • 数据一致性:确保BLE数据的单位与Health Connect要求一致(如心率用bpm,体重用千克)
  • 兼容性检查:仅Android 8.0(API 26)及以上设备支持Health Connect,需对低版本设备做降级提示或处理

内容的提问来源于stack exchange,提问作者neXos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:01:08