You need to enable JavaScript to run this app. Android端查询Google Fit营养历史仅返回第一条数据,如何获取全日数据?
优惠活动
大模型
产品
解决方案
定价
更多

Android端查询Google Fit营养历史仅返回第一条数据,如何获取全日数据?

解答

你遇到的问题可通过以下步骤修复:

  • 替换查询接口:readDailyTotal接口针对营养数据的默认聚合逻辑存在限制,仅返回单条汇总数据而非全量条目,请改用readData接口拉取指定时间范围内的所有独立营养数据点,自行聚合得到完整的单日数据。修改后的参考代码如下:
val nowInMillis = 1625656053000
val weekAgoInMillis = 1625137653000

val fitnessOptions = FitnessOptions.builder()
    .addDataType(DataType.TYPE_NUTRITION, FitnessOptions.ACCESS_READ)
    .addDataType(DataType.AGGREGATE_NUTRITION_SUMMARY, FitnessOptions.ACCESS_READ)
    .build()

val account = GoogleSignIn.getAccountForExtension(activity, fitnessOptions)

coroutineScope.launch {
    val readRequest = DataReadRequest.Builder()
        .read(DataType.TYPE_NUTRITION)
        .setTimeRange(weekAgoInMillis, nowInMillis, TimeUnit.MILLISECONDS)
        .build()

    Fitness.getHistoryClient(activity, account)
        .readData(readRequest)
        .addOnSuccessListener { response ->
            var totalCalories = 0f
            var totalCarbs = 0f
            var totalFat = 0f
            var totalProtein = 0f

            for (dataSet in response.dataSets) {
                for (dp in dataSet.dataPoints) {
                    val nutrients = dp.getValue(Field.FIELD_NUTRIENTS)
                    // 累加单条食物的营养数据
                    totalCalories += nutrients.get(Field.NUTRIENT_CALORIES) ?: 0f
                    totalCarbs += nutrients.get(Field.NUTRIENT_TOTAL_CARBS) ?: 0f
                    totalFat += nutrients.get(Field.NUTRIENT_TOTAL_FAT) ?: 0f
                    totalProtein += nutrients.get(Field.NUTRIENT_PROTEIN) ?: 0f
                }
            }
            // 此处得到的即为单日全量营养总和
            Log.i(TAG, "单日总营养:热量=$totalCalories 碳水=$totalCarbs 脂肪=$totalFat 蛋白质=$totalProtein")
        }
        .addOnFailureListener { e -> Log.d(TAG, "查询失败", e) }
}
  • 检查第三方应用同步设置:打开Lose It的设置页,找到Google Fit同步选项,确认开启了「同步所有食物条目」,部分应用默认仅同步单日汇总数据,不会上报每一条食物记录,会导致Google Fit端仅存储部分数据。
  • 重新授权权限:卸载应用重装后再次请求Google Fit授权,确保营养数据读取权限被完整授予,避免权限缺失导致部分数据无法读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 09:42:00