我已经构建了一个相当简单的应用程序几周了,它将我的Fitbit Flex跟踪器的活动推送到Google Fit。这一切都非常简单:它创建了数据源,并使用这些来推送最后一小时的卡路里计数,步数和距离Google Fit。如果我使用Fitbit应用程序记录它,它也会增加我的体重。
每小时,它会将这三个指标推送到三个不同的数据集中,每个数据集都有一个数据点。例如:从10:00到10:59,步骤为451步。这适用于所有这三个指标。
每天一次,范围为00:00到23:59的数据集会将我的权重发送给Google健身。该数据集也有一个数据点。
这个系统似乎适用于我的步数和卡路里计数。它并不完美,因为我的步数没有任何相关的活动。但Google Fit会成功接收数据并将其存储起来。
然而,谷歌健康似乎没有发现我报告的体重。当我提交它时,Google Fit似乎也不记得距离。
我使用的数据类型是:
我的应用程序的源代码在Github上:https://github.com/JC5/fitsync
任何提示或技巧?这是我可以使用REST API吗?
答案 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
}
]
}
]
}
距离指标尚未注册,但可能还有其他未记录的功能。