Recording APIを使ってセッションを作る

ツイート このエントリーをはてなブックマークに追加
1つ上へ / ブログトップへ

Recording APIを使ってセッションを作ることができます。次のように使うようです。

  • subscribe()メソッドで購読する
  • startSession()メソッドでセッションを開始する
  • (オプション)既存の購読では収集できないデータをHistoryApi.insert()で追加する
  • stopSession()メソッドでセッションを終了する

次の例はセッションをする例です。

private void startSession(final String name, final String identifier, final String description) {
  new AsyncTask<Void, Void, Status>() {
    @Override
    protected com.google.android.gms.common.api.Status doInBackground(Void... voids) {
      // 1. Create a session object
      // (provide a name, identifier, description and start time)
      Session session = new Session.Builder()
        .setName(name)
        .setIdentifier(identifier)
        .setDescription(description)
        .setStartTimeMillis(1000)
        // optional - if your app knows what activity:
        .setActivity(FitnessActivities.RUNNING)
        .build();

      // 2. Invoke the Recording API with:
      // - The Google API client object
      // - The request object
      PendingResult<com.google.android.gms.common.api.Status> pendingResult =
        Fitness.RecordingApi.startSession(mApiClient, session);
      return pendingResult.await();
    }

    @Override
    protected void onPostExecute(com.google.android.gms.common.api.Status status) {
      super.onPostExecute(status);
      if (status.isSuccess()) {
        addMessage("Session is started successfully.");
      } else {
        addMessage("Session is not started.");
      }
    }
  }.execute();
}

セッションオブジェクトの作成部分だけ見てみましょう。

Session session = new Session.Builder()
  .setName(name)
  .setIdentifier(identifier)
  .setDescription(description)
  .setStartTimeMillis(1000)
  // optional - if your app knows what activity:
  .setActivity(FitnessActivities.RUNNING)
  .build();

名前 / 識別子 / 説明と、開始までのミリ秒を指定します。どんな活動が始まるかが分かっている場合はsetActivity()で指定します。

セッションが実際に始まる時(StartTimeMillsだけ経過した後)、BroadcastIntentが投げられます。これを受け取るには次のIntentFilterを設定します。

<intent-filter>
  <action android:name="com.google.android.gms.fitness.session_start" />
  <data android:mimeType="vnd.google.android.fitness.activity_type/8" />
</intent-filter>

mimeTypeの最後の/8の部分は、setActivity()で指定した活動の種類をint値で指定します。この例では、「走り始めるセッションが始まるよー」を受信するIntentFilterになります。

1つ上へ / ブログトップへ