Recording API を使用すると、アプリはサブスクリプションを作成して、バッテリー効率の良い方法でセンサーデータの自動保存をリクエストできます。定期購入は Android アプリに関連付けられ、フィットネス データ型または特定のデータソースで構成されます。
アプリ内のさまざまなデータタイプやデータソースに対して、複数の定期購入を作成できます。Google Fit では、アクティブな定期購入のフィットネス データはアプリが実行中でない場合でも保存され、システムの再起動時に復元されます。
記録されたデータはユーザーのフィットネス履歴から参照できます。アプリ内でもデータをリアルタイムで表示する場合は、Sensors API と Recording API を使用します。セッション メタデータを使用してフィットネス データを記録するには、Sessions API を使用します。
フィットネス データに登録する
アプリ内でセンサーデータのバックグラウンドでの収集をリクエストするには、次のコード スニペットに示すように、RecordingClient.subscribe
メソッドを使用します。
Kotlin
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) // This example shows subscribing to a DataType, across all possible data // sources. Alternatively, a specific DataSource can be used. .subscribe(DataType.TYPE_STEP_COUNT_DELTA) .addOnSuccessListener { Log.i(TAG, "Successfully subscribed!") } .addOnFailureListener { e -> Log.w(TAG, "There was a problem subscribing.", e) }
Java
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) // This example shows subscribing to a DataType, across all possible // data sources. Alternatively, a specific DataSource can be used. .subscribe(DataType.TYPE_STEP_COUNT_DELTA) .addOnSuccessListener(unused -> Log.i(TAG, "Successfully subscribed!")) .addOnFailureListener( e -> Log.w(TAG, "There was a problem subscribing.", e));
定期購入が正常に追加されると、Google Fit はアプリに代わって TYPE_STEP_COUNT_DELTA
タイプのフィットネス データをフィットネス履歴に保存します。この定期購入は、アプリの有効な定期購入のリストに表示されます。
アプリでより多くの種類のフィットネス データをサブスクライブするには、上記の例の手順を行いますが、毎回異なるフィットネス データタイプを指定します。
アクティブなサブスクリプションを一覧表示する
アプリの有効な定期購入のリストを取得するには、次のコード スニペットに示すように、RecordingClient.listSubscriptions
メソッドを使用します。
Kotlin
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .listSubscriptions() .addOnSuccessListener { subscriptions -> for (sc in subscriptions) { val dt = sc.dataType Log.i(TAG, "Active subscription for data type: ${dt.name}") } }
Java
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .listSubscriptions() .addOnSuccessListener(subscriptions -> { for (Subscription sc : subscriptions) { DataType dt = sc.getDataType(); Log.i(TAG, "Active subscription for data type: ${dt.name}"); } }); }
フィットネス データの登録を解除
アプリでのセンサーデータの収集を停止するには、次のコード スニペットに示すように、RecordingClient.unsubscribe
メソッドを使用します。
Kotlin
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) // This example shows unsubscribing from a DataType. A DataSource should // be used where the subscription was to a DataSource. Alternatively, if // the client doesn't maintain its subscription information, they can use // an element from the return value of listSubscriptions(), which is of // type Subscription. .unsubscribe(DataType.TYPE_STEP_COUNT_DELTA) .addOnSuccessListener { Log.i(TAG,"Successfully unsubscribed.") } .addOnFailureListener { e-> Log.w(TAG, "Failed to unsubscribe.") // Retry the unsubscribe request. }
Java
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) // This example shows unsubscribing from a DataType. A DataSource // should be used where the subscription was to a DataSource. // Alternatively, if the client doesn’t maintain its subscription // information, they can use an element from the return value of // listSubscriptions(), which is of type Subscription. .unsubscribe(DataType.TYPE_STEP_COUNT_DELTA) .addOnSuccessListener(unused -> Log.i(TAG,"Successfully unsubscribed.")) .addOnFailureListener(e -> { Log.w(TAG, "Failed to unsubscribe."); // Retry the unsubscribe request. }); }