本文档介绍了如何使用 Fitness REST API 记录锻炼情况。
第 1 步:设置项目
您需要在 Google API 控制台中设置一个项目,并激活对 Fitness REST API,如使用入门中所述。
第 2 步:对应用进行身份验证
您的应用需要使用访问令牌对向 Fitness API 发出的请求进行身份验证。要获取 访问令牌,则您的应用包含客户端专用凭据和访问权限范围。 如向请求授权中所述。
第 3 步:创建数据源
数据源表示特定类型的传感器数据源。所有数据已插入 健身数据存储区必须与数据源相关联。您只需创建一次数据源 以便在将来的会话中重复使用。
如需创建数据源,请使用以下参数提交经过身份验证的 HTTP 请求:
- HTTP 方法
- 投放后
- 资源
https://www.googleapis.com/fitness/v1/users/me/dataSources
me
用户 ID 是指使用访问令牌为请求授权的用户。- 请求正文
{ "name": "example-fit-heart-rate", "dataStreamId": "raw:com.google.heart_rate.bpm:1234567890:Example Fit:example-fit-hrm-1:123456", "dataType": { "field": [{ "name": "bpm", "format": "floatPoint" }], "name": "com.google.heart_rate.bpm" }, "application": { "packageName": "com.example.fit.someapp", "version": "1.0" }, "device": { "model": "example-fit-hrm-1", "version": "1", "type": "watch", "uid": "123456", "manufacturer":"Example Fit" }, "type": "raw" }
此请求会创建一个数据源,该数据源代表提供健身数据的心率监测器
com.google.heart_rate.bpm
类型的数据。必须指定数据源的 ID,该 ID 必须
可以是任意值。此示例中的数据源 ID 遵循合理的命名惯例
供您采用。如果数据仅由应用生成,则设备组件是可选的。
如果请求成功,则响应为 200 OK
状态代码。
有关数据源的详情,请参阅
Users.dataSources
资源。
第 4 步:添加数据点
您可以使用数据集在健身存储区中插入数据点。数据集是一系列数据的集合, 受时间限制的单个数据源的数据点。
要创建数据集并为其添加点,请提交经过身份验证的 HTTP 请求,其中包含以下 参数:
- HTTP 方法
- 补丁
- 资源
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.heart_rate.bpm:1234567890:Example%20Fit:example-fit-hrm-1:123456/datasets/1411053997000000000-1411057556000000000该网址包含数据源 ID 以及数据集的开始和结束时间(以纳秒为单位)。
- 请求正文
{ "minStartTimeNs": 1411053997000000000, "maxEndTimeNs": 1411057556000000000, "dataSourceId": "raw:com.google.heart_rate.bpm:1234567890:Example Fit:example-fit-hrm-1:123456", "point": [ { "startTimeNanos": 1411053997000000000, "endTimeNanos": 1411053997000000000, "dataTypeName": "com.google.heart_rate.bpm", "value": [ { "fpVal": 78.8 } ] }, { "startTimeNanos": 1411055000000000000, "endTimeNanos": 1411055000000000000, "dataTypeName": "com.google.heart_rate.bpm", "value": [ { "fpVal": 89.1 } ] }, { "startTimeNanos": 1411057556000000000, "endTimeNanos": 1411057556000000000, "dataTypeName": "com.google.heart_rate.bpm", "value": [ { "fpVal": 62.45 } ] } ] }
此请求会在一小时内创建一个包含三个心率数据点的数据集 来源。
如果请求成功,则响应为 200 OK
状态代码。
有关数据集的更多信息,请参阅
Users.dataSources.datasets
资源。
生成有效的时间戳
上述示例中的时间戳以纳秒为单位。如需生成有效的时间戳,您可以使用 以下 Python 脚本:
from datetime import datetime, timedelta import calendar def date_to_nano(ts): """ Takes a datetime object and returns POSIX UTC in nanoseconds """ return calendar.timegm(ts.utctimetuple()) * int(1e9) if __name__ == '__main__': print 'Current time is %d' % date_to_nano(datetime.now()) print 'Time 1 hour ago was %d' % date_to_nano(datetime.now() + timedelta(hours=-1))
第 5 步:创建会话
现在您已将数据插入健身存储区,可以插入时段来提供 此锻炼的其他元数据。会话表示用户在该时间段内 进行健身活动。
如要为此锻炼创建时段,请使用以下参数提交已通过身份验证的 HTTP 请求:
- HTTP 方法
- PUT
- 资源
https://www.googleapis.com/fitness/v1/users/me/sessions/sessionId
sessionId 是任意的,并且对所有会话而言必须是唯一的 与经过身份验证的用户相关联。
- 请求正文
{ "id": "example-fit-1411053997", "name": "Example Fit Run on Sunday Afternoon", "description": "Example Fit Running Session", "startTimeMillis": 1411053997000, "endTimeMillis": 1411057556000, "application": { "name": "Foo Example App", "version": "1.0" }, "activityType": 8 }
选择直观易懂的描述性会话名称,因为其他应用可能会使用该名称 来总结这次会议会话的开始时间和结束时间以毫秒为单位 (而非纳秒)。为您的会话和数据源使用相同的软件包名称;这使得 更加一致,并确保数据归因将链接回您的应用。
本次练习中指定的时间间隔涵盖之前插入的心率数据,因此 Google 健身会将这些数据点与此时段相关联。
有关会话的详细信息,请参阅
Users.sessions
资源。
第 6 步:创建活动细分
活动细分有助于您表示会话中的不同活动。
活动细分是指涉及单个活动的时间段。例如,如果用户访问
对于一小时的跑步,您可以创建一个 running
(8) 类型的活动细分,用于
整个小时。如果某位用户跑了 25 分钟,然后休息 5 分钟,然后又跑了 0.5 分钟
则可以创建三个连续的活动细分,类型为 running
,
分别为 unknown
和 running
。
创建活动细分与添加任何其他数据点的方法相同。创建活动 细分,首先要创建活动细分数据源,然后创建数据集并添加 活动细分数据指向它。
以下示例创建了三个相同时间范围内的细分(跑步、休息和跑步) 作为心率读数(假设您已创建活动细分) 数据源,数据源 ID 为“raw:com.google.activity.segment:1234567890:Example Fit:example-fit-hrm-1:123456”:
- HTTP 方法
- 补丁
- 资源
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.activity.segment:1234567890/datasets/1411053997000000000-1411057556000000000- 请求正文
{ "minStartTimeNs": 1411053997000000000, "maxEndTimeNs": 1411057556000000000, "dataSourceId": "raw:com.google.activity.segment:1234567890", "point": [ { "startTimeNanos": 1411053997000000000, "endTimeNanos": 1411053997000000000, "dataTypeName": "com.google.activity.segment", "value": [ { "intVal": 8 } ] }, { "startTimeNanos": 1411055000000000000, "endTimeNanos": 1411055000000000000, "dataTypeName": "com.google.activity.segment", "value": [ { "intVal": 4 } ] }, { "startTimeNanos": 1411057556000000000, "endTimeNanos": 1411057556000000000, "dataTypeName": "com.google.activity.segment", "value": [ { "intVal": 8 } ] } ] }
这些活动细分数据点会添加到专门创建的数据源中 用于处理活动片段您可以为每组细分受众群创建一个新的数据源 您应重复使用专用于特定类型的会话(如跑步)的会话。
会话指定活动类型,该类型应与用户参与的整体活动相匹配。 即使用户在跑步时休息一下,整体的锻炼仍然是跑步。一般来说, 时段的活动类型将与“主要活动”细分类型一致。
使用 unknown 活动类型 (4) 来指示用户正在休息,因为您可能并未在活动中 了解用户正在做什么:用户可能静止或拉伸、喝水等。如果您 知道用户没有移动,则可以使用 still (3)。
如需查看 activity 类型的详细列表,请参阅 activity 类型。
摘要
在本教程中,您为数据类型和活动细分创建了数据源;你插入了 注入健身数据存储区的数据;您创建了活动细分 在锻炼过程中发生的活动;您插入了一个专题演讲 锻炼。
Google 健身会将您插入的数据与该时间间隔内的任何其他可用数据相关联 一个表示用户锻炼的时段