Recordging APIを使うと、歩数のデータなどをバックグラウンドで自動で計測してくれたりします。計測したデータはHistory APIで確認します。
まずは、計測してほしいデータを購読します。次は歩数の積算値を購読する例です。
private void subscribe() {
new AsyncTask<Void, Void, Status>() {
@Override
protected com.google.android.gms.common.api.Status doInBackground(Void... voids) {
PendingResult<com.google.android.gms.common.api.Status> pendingResult =
Fitness.RecordingApi.subscribe(mApiClient, DataTypes.STEP_COUNT_CUMULATIVE);
// 2. Retrieve the result synchronously
// (For the subscribe method, this call returns immediately)
return pendingResult.await();
}
@Override
protected void onPostExecute(com.google.android.gms.common.api.Status status) {
super.onPostExecute(status);
if (status.isSuccess()) {
addMessage("Successfully subscribed!");
} else {
addMessage("There was a problem subscribing.");
}
}
}.execute();
}
await()をUIスレッドで呼ぶと落ちてしまうので、AsyncTaskのdoInBackground()内で呼ぶようにします。
購読中のデータ一覧を取得するには、Fitness.RecordingApi.listSubscriptions()を呼びます。
private void listSubscription() {
new AsyncTask<Void, Void, ListSubscriptionsResult>() {
@Override
protected ListSubscriptionsResult doInBackground(Void... voids) {
PendingResult<ListSubscriptionsResult> pendingResult =
Fitness.RecordingApi.listSubscriptions(mApiClient, DataTypes.STEP_COUNT_CUMULATIVE);
// 2. Retrieve the list of subscriptions synchronously
// (For the listSubscriptions method, this call returns immediately)
return pendingResult.await();
}
@Override
protected void onPostExecute(ListSubscriptionsResult listResult) {
super.onPostExecute(listResult);
List<Subscription> subscriptions = listResult.getSubscriptions();
addMessage("count of subscriptions : " + subscriptions.size());
for (Subscription sc : subscriptions) {
// Get information about each subscription
DataType dt = sc.getDataType();
addMessage("dataType : " + dt.getName());
}
}
}.execute();
}
購読の解除はFitness.RecordingApi.unsubscribe()を呼びます。
private void unsubscribe() {
new AsyncTask<Void, Void, Status>() {
@Override
protected com.google.android.gms.common.api.Status doInBackground(Void... voids) {
PendingResult<com.google.android.gms.common.api.Status> pendingResult =
Fitness.RecordingApi.unsubscribe(mApiClient, DataTypes.STEP_COUNT_CUMULATIVE);
// 2. Retrieve the result of the request synchronously
// (For the unsubscribe method, this call returns immediately)
return pendingResult.await();
}
@Override
protected void onPostExecute(com.google.android.gms.common.api.Status status) {
super.onPostExecute(status);
if (status.isSuccess()) {
addMessage("Subscription removed successfully.");
} else {
addMessage("Subscription not removed.");
}
}
}.execute();
}