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

Google Fit API获取骑行活动时无距离数据问题求助

问题描述

使用版本

implementation "com.google.android.gms:play-services-fitness:21.1.0"

客户端定义

GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestScopes(Scope("https://www.googleapis.com/auth/fitness.activity.read"), Scope("https://www.googleapis.com/auth/fitness.location.read"))
            .requestIdToken(BuildConfig.GOOGLE_FIT_CLIENT_ID)
            .requestServerAuthCode(BuildConfig.GOOGLE_FIT_CLIENT_ID, true)
            .build()

val readRequest = DataReadRequest.Builder()
                .read(DataType.TYPE_ACTIVITY_SEGMENT)
                .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
                .build()

当前通过上述请求可获取骑行活动的数据集、数据点,但仅包含起止时间与活动类型,无距离数据。然而在Google Fit应用中查看同一活动时,却能显示距离信息。

解决方案

TYPE_ACTIVITY_SEGMENT仅记录活动的类型、起止时间等元数据,距离属于衍生数据,存储在单独的DataType中,需要修改请求逻辑来获取:

  • 第一步:在DataReadRequest中添加读取距离对应的DataType
    Google Fit中存储骑行距离的核心类型是DataType.TYPE_DISTANCE_DELTA,该类型记录的是时间段内的距离增量。修改后的请求代码如下:

    val readRequest = DataReadRequest.Builder()
            .read(DataType.TYPE_ACTIVITY_SEGMENT) // 保留活动段信息
            .read(DataType.TYPE_DISTANCE_DELTA) // 添加读取距离增量
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .build()
    
  • 第二步:关联活动段与距离数据
    获取数据后,你可以通过时间范围匹配,将同一骑行活动段对应的所有TYPE_DISTANCE_DELTA数据点的数值累加,得到该活动的总距离。

  • 进阶优化:按活动段自动分组
    如果希望直接获取每个活动段对应的汇总距离,可以使用按活动段分桶的请求,Google Fit会自动帮你把对应活动段的距离数据聚合:

    val readRequest = DataReadRequest.Builder()
            .bucketByActivitySegment(1, TimeUnit.MILLISECONDS) // 按活动段分组
            .read(DataType.TYPE_DISTANCE_DELTA)
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .build()
    

    处理返回的Bucket时,每个桶会关联对应的活动段信息,以及该段的总距离。

注意:你的权限配置已经包含fitness.location.read,满足读取距离数据的权限要求,无需额外添加权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:05:20