3

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

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

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

这个系统似乎对我的步数和卡路里数来说足够好。它并不完美,因为我的步数没有任何相关活动。但 Google Fit 成功接收数据并存储。

但是,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 的吗?</p>

4

1 回答 1

2

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

我的体重是在这里和现在测量的,该值不是一天或一周的汇总,而是一次瞬时测量。此时此刻,我的体重为 82.1 公斤。

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

我发送给 Google Fit 的数据集在 Google Fit 中正确注册,如下所示:

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

距离度量尚未注册,但那里可能还有其他未记录的特征。

于 2016-05-04T10:50:52.420 回答