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

如何通过Health Connect获取Google Fit的条目步数?

通过Health Connect获取按活动条目拆分的步数数据

可以通过Health Connect获取对应Google Fit中"活动条目"的步数,核心是利用**会话(SessionRecord)**关联步数记录(StepsRecord)来实现,而非仅读取聚合的总步数。以下是具体实现思路和步骤:

核心逻辑说明

Google Fit中的"活动条目"对应Health Connect里的SessionRecord,每个会话代表一次独立的活动(比如步行、跑步、健身等)。你需要先查询会话列表,再针对每个会话的时间范围查询对应的步数记录,累加后得到该条目的总步数。

具体实现步骤

  • 申请权限:在AndroidManifest.xml中声明并动态申请以下权限:
    <uses-permission android:name="android.permission.health.READ_STEPS" />
    <uses-permission android:name="android.permission.health.READ_SESSIONS" />
    
  • 查询会话列表:获取指定时间范围内的所有活动会话,这些会话就是你要的"条目"
  • 关联步数记录:对每个会话,根据其开始/结束时间查询该时间段内的StepsRecord,累加步数得到该条目的总步数

代码示例(Kotlin)

import androidx.health.connect.client.HealthConnectClient
import androidx.health.connect.client.request.ReadRecordsRequest
import androidx.health.connect.client.time.TimeRangeFilter
import androidx.health.connect.client.records.SessionRecord
import androidx.health.connect.client.records.StepsRecord
import kotlinx.coroutines.runBlocking

fun getSessionSteps(context: Context, startTime: Long, endTime: Long) {
    val healthConnectClient = HealthConnectClient.getOrCreate(context)
    
    // 1. 查询指定时间范围内的所有会话
    val sessionRequest = ReadRecordsRequest(
        recordType = SessionRecord::class,
        timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
    )
    
    runBlocking {
        val sessionResult = healthConnectClient.readRecords(sessionRequest)
        val sessions = sessionResult.records
        
        // 2. 遍历每个会话,查询对应步数
        for (session in sessions) {
            val stepsRequest = ReadRecordsRequest(
                recordType = StepsRecord::class,
                timeRangeFilter = TimeRangeFilter.between(session.startTime, session.endTime)
            )
            val stepsResult = healthConnectClient.readRecords(stepsRequest)
            val totalSteps = stepsResult.records.sumOf { it.count }
            
            // 处理会话条目对应的步数,比如存入本地或展示
            // 示例:println("活动条目:${session.name ?: "未知活动"},步数:$totalSteps")
        }
    }
}

注意事项

  • 确保用户已授予对应的Health Connect权限,否则会抛出权限异常
  • 部分第三方应用同步的步数可能未关联会话,这类数据无法按条目拆分,只能通过聚合查询获取总步数
  • 时间范围查询要精准,避免不同会话的步数被重复计算

内容的提问来源于stack exchange,提问作者内田真菜

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:02:39