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

Android集成Google Fit步数为0、Firebase初始化失败及OAuth配置咨询

解决Google Fit步数获取为0及Firebase初始化失败问题 + OAuth ClientID配置指南

我来帮你一步步拆解和解决遇到的这两个问题:

一、Firebase初始化失败 + 步数获取为0的排查方案

首先,Firebase初始化失败大概率是导致你无法正常获取Google Fit数据的核心原因——当前Google Fit API与Firebase深度集成,初始化异常会直接阻断API的正常调用流程。

1. 先修复Firebase初始化问题

  • 确认你已在Firebase控制台完成应用注册:
    • 登录Firebase控制台,创建/关联你的Android应用,填写正确的包名和SHA-1指纹(必须和你签名用的SHA-1一致,包括debug和release版本)。
    • 下载生成的 google-services.json 文件,将其放置在你的Android项目的 app模块根目录(和build.gradle同级)。
  • 检查Gradle配置:
    • 项目根目录的 build.gradle 中,确保添加了Google服务插件依赖:
      dependencies {
          classpath 'com.google.gms:google-services:4.4.0' // 使用最新稳定版
          // 其他依赖...
      }
      
    • app模块的 build.gradle 末尾,确保应用了插件:
      apply plugin: 'com.google.gms.google-services'
      
    • 同步Gradle后,运行应用,查看日志是否还出现“Firebase app initialisation unsuccessful”。

2. 步数获取为0的后续排查

当Firebase初始化正常后,再检查以下几点:

  • 权限是否正确申请:
    • Android 10及以上需要申请 ACTIVITY_RECOGNITION 权限,在Manifest中添加:
      <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
      
    • 除了系统权限,还需要通过Google Fit的API请求健身数据权限,确保你的代码中正确初始化 FitOptions 并请求了步数相关权限:
      FitOptions fitOptions = new FitOptions.Builder()
          .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitOptions.ACCESS_READ)
          .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitOptions.ACCESS_READ)
          .build();
      
  • 数据查询时间段是否正确:
    • 确认查询的起始时间和结束时间是正确的毫秒级时间戳,且起始时间早于结束时间,比如查询今日的步数:
      Calendar cal = Calendar.getInstance();
      long endTime = cal.getTimeInMillis();
      cal.set(Calendar.HOUR_OF_DAY, 0);
      cal.set(Calendar.MINUTE, 0);
      cal.set(Calendar.SECOND, 0);
      long startTime = cal.getTimeInMillis();
      
  • 测试设备是否有步数数据:
    • 打开设备上的Google Fit应用,确认已有步数记录(可以手动录入一条测试数据),否则API返回0是正常的。
  • API调用逻辑是否正确:
    • 确保使用 HistoryClient 的 readData 或 aggregate 方法时,参数正确,比如使用 AggregateRequest 来聚合步数数据:
      AggregateRequest request = AggregateRequest.builder()
          .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
          .aggregate(DataType.AGGREGATE_STEP_COUNT_DELTA)
          .bucketByTime(1, TimeUnit.DAYS)
          .build();
      

二、OAuth ClientID在Android Studio项目中的放置位置

你不需要手动在代码中硬编码OAuth ClientID,正确的配置方式是:

  1. 当你在Firebase控制台或Google Cloud Console注册Android应用时,生成的 google-services.json 文件中已经包含了对应的ClientID信息。
  2. 将该文件放置在app模块根目录后,Google Services Gradle插件会自动读取并配置这些信息,无需手动干预。

如果特殊场景下需要手动引用ClientID,可以在 res/values/strings.xml 中添加:

<string name="oauth_client_id" translatable="false">你的ClientID值</string>

然后在代码中通过 getString(R.string.oauth_client_id) 获取即可,但优先推荐使用 google-services.json 的自动配置方式,避免手动维护出错。


你的代码片段整理如下:

public class MainActivity extends AppCompatActivity{ 
    private static final int GOOGLE_FIT_PERMISSION_REQUEST_CODE = 1; 
    private static final int ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:24:59