通过Google Fit REST API提交重量信息/距离

时间:2016-05-03 06:37:15

标签: php google-fit google-fit-sdk

我已经构建了一个相当简单的应用程序几周了,它将我的Fitbit Flex跟踪器的活动推送到Google Fit。这一切都非常简单:它创建了数据源,并使用这些来推送最后一小时的卡路里计数,步数和距离Google Fit。如果我使用Fitbit应用程序记录它,它也会增加我的体重。

每小时,它会将这三个指标推送到三个不同的数据集中,每个数据集都有一个数据点。例如:从10:00到10:59,步骤为451步。这适用于所有这三个指标。

每天一次,范围为00:00到23:59的数据集会将我的权重发送给Google健身。该数据集也有一个数据点。

这个系统似乎适用于我的步数和卡路里计数。它并不完美,因为我的步数没有任何相关的活动。但Google Fit会成功接收数据并将其存储起来。

然而,谷歌健康似乎没有发现我报告的体重。当我提交它时,Google Fit似乎也不记得距离。

我使用的数据类型是:

  • com.google.calories.expended
  • com.google.distance.delta
  • com.google.step_count.delta
  • com.google.weight

我的应用程序的源代码在Github上:https://github.com/JC5/fitsync

任何提示或技巧?这是我可以使用REST API吗?

1 个答案:

答案 0 :(得分:1)

是。这个question引导我朝着正确的方向前进。事实证明,我使用的字段类型是瞬时字段类型(见上文)。它们仅在一个时刻进行测量。相反的是聚合字段类型。

我的体重就在这里和现在进行测量,并且该值不会在一天或一周内汇总,而是一次瞬时测量。在这个确切的时刻,我体重82.1公斤。

因此,当您创建具有单个数据点的数据集时(您需要将此类瞬时字段类型发送给Google),您必须确保开始时间和结束时间相同。毕竟,如果它不是即时的,它将不是一个正确的条目。

我发送给Google Fit的数据集如下所示:

{
   "minStartTimeNs":1462358894000000000,
   "maxEndTimeNs":1462358894000000000,
   "dataSourceId":"your-data-id",
   "point":[
      {
         "dataTypeName":"com.google.weight",
         "originDataSourceId":"",
         "startTimeNanos":1462358894000000000,
         "endTimeNanos":1462358894000000000,
         "value":[
            {
               "fpVal":81.2
            }
         ]
      }
   ]
}

距离指标尚未注册,但可能还有其他未记录的功能。