このドキュメントでは、Fitness REST API を使用してワークアウトを記録する方法について説明します。
ステップ 1: プロジェクトを設定する
Google API Console でプロジェクトを設定し、 スタートガイドで説明されている 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 は、適切な命名規則に従っています
いくつかありますデータがアプリによってのみ生成される場合、デバイス コンポーネントは省略可能です。
リクエストが成功すると、レスポンスは 200 OK
ステータス コードになります。
データソースの詳細については、API リファレンスの
Users.dataSources
リソース。
ステップ 4: データポイントを追加する
データセットを使用して、フィットネス ストアにデータポイントを挿入します。データセットとは 時間で区切られた単一のデータソースからのデータポイントです。
データセットを作成してポイントを追加するには、以下のコマンドを使用して認証済みの HTTP リクエストを送信します。 parameters:
- 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この URL には、データソース 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 } ] } ] }
このリクエストは、3 つの心拍数データポイントを含むデータセットを 1 時間以内に作成します。 示しています。
リクエストが成功すると、レスポンスは 200 OK
ステータス コードになります。
データセットの詳細については、API リファレンスの
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 Fit は、これらのデータポイントをこのセッションに関連付けます。
セッションの詳細については、API リファレンスの
Users.sessions
リソース。
ステップ 6: アクティビティ セグメントを作成する
アクティビティ セグメントは、セッション内のさまざまなアクティビティを表すのに役立ちます。
アクティビティ セグメントは、1 つのアクティビティで構成される時間セグメントです。たとえば、ユーザーが
1 時間の実行の場合、running
(8)タイプのアクティビティ セグメントを作成できます。
表示されます。ユーザーが 25 分間走った場合、休憩は 5 回、休憩時間は残り半分
running
タイプのアクティビティ セグメントを 3 つ連続して作成できます。
それぞれ unknown
、running
です。
アクティビティ セグメントの作成は、他のデータポイントを追加する場合と同じです。アクティビティを作成するには まずアクティビティ セグメントのデータソースを作成してから、データセットを作成して アクティビティセグメントのデータが 指しています
次の例では、同じ期間に 3 つのセグメント(実行中、休息、実行中)を作成します 心拍数の読み取り値(すでにアクティビティ セグメントを作成済みの場合) データソースで、データソース 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)は、ユーザーが安静であることを示します。 ユーザーが何をしているか(静止している、ストレッチをしている、水を飲んでいるなど)を知ることができます。もし ユーザーが移動していないことを確認する場合は、まだ使用できます(3)。
アクティビティ タイプの詳細なリストについては、アクティビティ タイプをご覧ください。
概要
このチュートリアルでは、データ型とアクティビティ セグメントのデータソースを作成しました。挿入しました フィットネスストアに取り込む各種のアクティビティ セグメントを ワークアウト中に行うアクティビティその地域全体を対象としたセッションを挿入し、 トレーニングできます。
挿入したデータと、その期間で利用可能なその他のデータが Google Fit によって関連付けられます ユーザーのワークアウトを表すセッションが 表示されています