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

Android SDK写入Google Fit的数据无法在Fit应用中显示求助

Google Fit Android SDK写入数据成功但App不显示问题

我们通过Android SDK向Google Fit写入运动数据时,遇到数据无法在Google Fit应用中显示的问题:插入请求始终返回成功,且通过verifySession调用readSession能读取到写入的会话及数据,但等待约30分钟后,数据仍未在Google Fit应用中展示。

操作流程

  • 从我方API获取IoT设备生成的JSON格式运动数据(示例:{ "data": [ { "id": "aa8329a1-9841-4f94-8911-06500e11d17b", "startTime": "2022-06-11 12:11:18", "finishTime": "2022-06-11 12:43:18", "type": 2, "distance": 0.069394 } ] }),当前仅需存储distance字段。
  • 完成Google登录配置:
GoogleSignInOptions
            .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestServerAuthCode(BuildConfig.WEB_CLIENT_GOOGLE_FIT)
            .requestIdToken(BuildConfig.WEB_CLIENT_GOOGLE_FIT)
            .requestScopes(
                Scope("https://www.googleapis.com/auth/fitness.activity.write"),
                Scope("https://www.googleapis.com/auth/fitness.heart_rate.write"),
                Scope("https://www.googleapis.com/auth/fitness.location.write"),
                Scope("https://www.googleapis.com/auth/fitness.activity.read"),
                Scope("https://www.googleapis.com/auth/fitness.location.read"))
            .build()
  • 定义FitnessOptions及数据类型:
FitnessOptions
            .builder()
            .addDataType(DataType.AGGREGATE_DISTANCE_DELTA, FitnessOptions.ACCESS_WRITE)
            .addDataType(DataType.AGGREGATE_CALORIES_EXPENDED, FitnessOptions.ACCESS_WRITE)
            .addDataType(DataType.AGGREGATE_SPEED_SUMMARY, FitnessOptions.ACCESS_WRITE)
            .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_WRITE)
            .addDataType(DataType.AGGREGATE_HEART_POINTS, FitnessOptions.ACCESS_WRITE)
            .addDataType(DataType.TYPE_POWER_SAMPLE, FitnessOptions.ACCESS_WRITE)
            .build()
  • 创建距离相关的DataSource:
val distanceDataSource = DataSource.Builder()
                .setAppPackageName("com.bodytone.zapp.dev")
                .setDataType(DataType.AGGREGATE_DISTANCE_DELTA)
                .setStreamName("session-data-distance")
                .setType(DataSource.TYPE_RAW)
                .build()
  • 创建DataPoint:
val distance = DataPoint.builder(distanceDataSource)
                .setTimeInterval(training1.getStartDateInMillis(), training1.getFinishDateInMillis(), TimeUnit.MILLISECONDS)
                .setField(Field.FIELD_DISTANCE, training1.distance.toFloat())
                .build()
  • 构建DataSet:
val distanceDataSet = DataSet.builder(distanceDataSource)
                .add(distance)
                .build()
  • 创建并执行Session插入请求:
val insertRequest = SessionInsertRequest.Builder()
                .setSession(session)
                .addDataSet(distanceDataSet)
                .build()
Fitness.getSessionsClient(requireActivity(), GoogleSignIn.getAccountForExtension(requireActivity(), fitnessOptions))
                .insertSession(insertRequest)
                .addOnSuccessListener {
                    Toast.makeText(requireActivity(), "Session insert was successful!", Toast.LENGTH_LONG).show()
                }
                .addOnCanceledListener {
                    Toast.makeText(requireActivity(), "Session insert was cancelled!", Toast.LENGTH_LONG).show()
                }
                .addOnFailureListener {
                    it.printStackTrace()
                    Toast.makeText(requireActivity(), "There was a problem inserting the session: ${it.message}", Toast.LENGTH_LONG).show()
                }
                .continueWith{
                    verifySession(training1)
                }

补充说明

  • Google控制台配置正常(包名、SHA1、OAuth consent窗口均无误,处于测试模式,使用测试用户)
  • 测试用户的Google Fit已关联我方应用,登录权限正常

恳请提供解决方案或可运行的代码示例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 06:35:05