ワークアウトを記録する方法

このドキュメントでは、Fitness REST API を使用してワークアウトを記録する方法について説明します。

ステップ 1: プロジェクトを設定する

スタートガイドの説明に従って、Google API Console でプロジェクトを設定し、Fitness REST API へのアクセスを有効にする必要があります。

ステップ 2: アプリを認証する

アプリはアクセス トークンを使用して Fitness API へのリクエストを認証する必要があります。アクセス トークンを取得するために、リクエストを承認するで説明されているように、アプリにはクライアント固有の認証情報とアクセス範囲が含まれています。

ステップ 3: データソースを作成する

データソースは、特定のタイプのセンサーデータのソースを表します。フィットネス ストアに挿入されるデータはすべて、データソースに関連付ける必要があります。データソースを一度作成すると、今後のセッションで再利用できます。

データソースを作成するには、次のパラメータを使用して認証済みの HTTP リクエストを送信します。

HTTP メソッド
POST
リソース

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 ステータス コードになります。

データソースの詳細については、Users.dataSources リソースの API リファレンスをご覧ください。

ステップ 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
    }
  ]
}
]
}

このリクエストにより、前のステップのデータソースの 1 時間以内に 3 つの心拍数データポイントを含むデータセットが作成されます。

リクエストが成功すると、レスポンスは 200 OK ステータス コードになります。

データセットの詳細については、Users.dataSources.datasets リソースの API リファレンスをご覧ください。

有効なタイムスタンプを生成する

上記の例のタイムスタンプはナノ秒単位です。有効なタイムスタンプを生成するには、次の 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 時間のランニングに出かけた場合は、1 時間全体に running(8)タイプのアクティビティ セグメントを作成できます。ユーザーが 25 分間走った場合、休憩は 5 回、休憩時間は残り半分 running タイプのアクティビティ セグメントを 3 つ連続して作成できます。 それぞれ unknownrunning です。

アクティビティ セグメントの作成は、他のデータポイントを追加する場合と同じです。アクティビティを作成するには まずアクティビティ セグメントのデータソースを作成してから、データセットを作成して アクティビティセグメントのデータが 指しています

次の例では、同じ期間内に 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
    }
  ]
}
]
}

これらのアクティビティ セグメントのデータポイントは、特別に作成されたデータソースに追加されます アクティビティセグメントを処理できますセグメントのセットごとに新しいデータソースを作成することはできますが、 ランニングなど、特定のタイプのセッション専用のセッションを再利用します。

セッションではアクティビティ タイプを指定します。このアクティビティ タイプは、ユーザーが行っている全体的なアクティビティと一致している必要があります。ユーザーがランニング中に休憩を取ったとしても、全体的なワークアウトはランニングです。一般的に、 主要なアクティビティ セグメントのタイプと一致します。

ユーザーが何をしているのか(静止しているのか、ストレッチをしているのか、水を飲んでいるのかなど)わからない場合は、アクティビティ タイプ「不明」(4)を使用して、ユーザーが休息中であることを示します。ユーザーが動いていないことがわかっている場合は、still(3)を使用できます。

アクティビティ タイプの詳細なリストについては、アクティビティ タイプをご覧ください。

概要

このチュートリアルでは、データ型とアクティビティ セグメントのデータソースを作成しました。挿入しました フィットネスストアに取り込むそれぞれのキャンペーンタイプで ワークアウト中に行うアクティビティその地域全体を対象としたセッションを挿入し、 トレーニングできます。

挿入したデータと、その期間で利用可能なその他のデータが Google Fit によって関連付けられます ユーザーのワークアウトを表すセッションが 表示されています