营养历史数据始终从 Android 上的 Google Fit 返回第一项

问题描述

我正在尝试从 Android 上的 Google Fit 查询营养历史数据。

数据是通过食物记录应用程序 (Lose It) 插入的。

但是当我从 Google Fit History 客户端查询数据时,它仅检索我插入应用程序中的第一个项目的数据。 即如果我用果汁和百吉饼记录早餐,将从客户端检索的宏仅用于百吉饼。

我的代码

val NowInMillis = 1625656053000;
val weekAgoInMillis = 1625137653000;

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

val account = GoogleSignIn.getAccountForExtension(activity,fitnessOptions)

coroutinescope.launch {

    fitness.getHistoryClient(activity,account)
        .readDailyTotal(DataType.TYPE_NUTRITION)
        .addOnSuccessListener { response ->
            for (dp in response.dataPoints) {
                Log.i(TAG,"Data point:")
                Log.i(TAG,"\tType: ${dp.dataType.name}")
                Log.i(
                    TAG,"\tStart: ${
                        Calendar.getInstance().apply {
                            timeInMillis = dp.getStartTime(TimeUnit.MILLISECONDS)
                        }.time
                    }")
                Log.i(
                    TAG,"\tEnd: ${
                        Calendar.getInstance().apply {
                            timeInMillis = dp.getEndTime(TimeUnit.MILLISECONDS)
                        }.time
                    }")
                for (field in dp.dataType.fields) {
                    Log.i(TAG,"\tField: ${field.name.toString()} Value: ${dp.getValue(field)}")
                }
            }
        }
        .addOnFailureListener { e -> Log.d(TAG,"OnFailure()",e) }
}              

打印结果:

2021-07-06 22:55:17.988 30237-30237/com.Metaflow.Flutterhealthfitexample I/FlutterHealthFitPlugin:  Type: com.google.nutrition.summary
2021-07-06 22:55:17.992 30237-30237/com.Metaflow.Flutterhealthfitexample I/FlutterHealthFitPlugin:  Start: Tue Jul 06 01:00:01 GMT+03:00 2021
2021-07-06 22:55:17.996 30237-30237/com.Metaflow.Flutterhealthfitexample I/FlutterHealthFitPlugin:  End: Tue Jul 06 01:00:01 GMT+03:00 2021
2021-07-06 22:55:18.002 30237-30237/com.Metaflow.Flutterhealthfitexample I/FlutterHealthFitPlugin:  Field: nutrients Value: {calories=111.6,carbs.total=25.792,cholesterol=0.0,dietary_fiber=0.496,fat.saturated=0.0496,fat.total=0.496,protein=1.736,sodium=2.48,sugar=20.832}
2021-07-06 22:55:18.002 30237-30237/com.Metaflow.Flutterhealthfitexample I/FlutterHealthFitPlugin:  Field: meal_type Value: 1

如果我查看食物记录应用程序,我可以看到下一个结果,它清楚地表明检索到的营养信息只匹配果汁:

food logger screenshot

我认为我的代码可能有问题,所以我下载了一个 FitBit 应用程序,该应用程序也能够显示来自 Google Fit 的营养信息,并且显示了相同的结果:

FitBit app result

是否可以选择获取一整天的营养信息?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)