Recording APIを使ってセッションを作ることができます。次のように使うようです。
次の例はセッションをする例です。
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になります。