如何从Google Fit REST API获取呼吸频率数据?返回空数组求助
解决Google Fit REST API获取呼吸频率数据返回空point数组的问题
可能的原因及排查步骤
1. 确认云端是否存在目标数据
- 打开Android端Google Fit应用,检查你手动添加的呼吸频率记录是否在指定时间范围内(
minStartTimeNs对应2023-02-01 00:00:00 UTC,maxEndTimeNs对应2023-02-07 00:00:00 UTC)。 - 手动添加的记录需要时间同步到云端,建议等待5-10分钟后再重试API调用。
2. 检查数据源ID是否匹配
- 你使用的
derived:com.google.respiratory.rate:com.google.android.gms:merged是合并后的衍生数据源,但手动添加的记录可能属于原始用户输入数据源。 - 调用
GET /fitness/v1/users/me/dataSources接口,筛选dataType.name为com.google.respiratory.rate的结果,找到类似raw:com.google.respiratory.rate:com.google.android.gms:user_input的原始数据源ID,替换后重新调用接口。
3. 验证权限配置
- 确保OAuth 2.0授权时已申请
https://www.googleapis.com/auth/fitness.respiratory_rate.read权限。 - 若之前调整过权限范围,需要重新获取授权凭证,旧凭证可能未包含新权限。
4. 核对时间范围与格式
- 确认
datasetId格式为{startTimeNs}-{endTimeNs},且时间范围完全覆盖你的呼吸记录时间。 - 可通过时间戳转换工具验证纳秒级UTC时间是否对应正确的日期区间,避免因时区或计算错误导致范围不匹配。
5. 尝试聚合查询验证数据存在性
如果衍生数据源查询无结果,可先调用聚合接口确认云端是否有数据:
POST /fitness/v1/users/me/dataset:aggregate Content-Type: application/json { "aggregateBy": [ { "dataTypeName": "com.google.respiratory.rate" } ], "bucketByTime": { "durationMillis": 86400000 }, "startTimeMillis": 1675209600000, "endTimeMillis": 1675728000000 }
内容的提问来源于stack exchange,提问作者Shubhangi
相关产品推荐
相关产品推荐

