Mit der Recording API kann deine App über Abos eine automatisierte Speicherung von Sensordaten akkueffizient anfordern. Ein Abo ist einer Android-App zugeordnet und besteht aus einem Fitnessdatentyp oder einer bestimmten Datenquelle.
Sie können in Ihrer App mehrere Abos für verschiedene Datentypen oder Datenquellen erstellen. Google Fit speichert Fitnessdaten aus aktiven Abos auch dann, wenn Ihre App nicht ausgeführt wird. Diese Abos werden beim Neustart des Systems wiederhergestellt.
Die aufgezeichneten Daten stehen im Fitnessverlauf des Nutzers zur Verfügung. Wenn die Daten in deiner App auch in Echtzeit angezeigt werden sollen, kannst du die Sensors API zusammen mit der Recording API verwenden. Verwenden Sie die Sessions API, um Fitnessdaten mit Sitzungsmetadaten aufzuzeichnen.
Fitnessdaten abonnieren
Wenn Sie die Erfassung von Sensordaten im Hintergrund in Ihrer App anfordern möchten, verwenden Sie die Methode RecordingClient.subscribe
, wie im folgenden Code-Snippet gezeigt:
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));
Wenn das Abo erfolgreich hinzugefügt wurde, speichert Google Fit Fitnessdaten vom Typ TYPE_STEP_COUNT_DELTA
im Namen der App im Fitnessverlauf. Dieses Abo wird in der Liste der aktiven Abos für Ihre App angezeigt.
Wenn Sie weitere Arten von Fitnessdaten in Ihrer App abonnieren möchten, führen Sie die Schritte im vorherigen Beispiel aus, geben Sie jedoch jedes Mal einen anderen Fitnessdatentyp an.
Aktive Abos auflisten
Verwenden Sie die Methode RecordingClient.listSubscriptions
, wie im folgenden Code-Snippet gezeigt, um eine Liste der aktiven Abos für Ihre Anwendung abzurufen:
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}"); } }); }
Keine Fitnessdaten mehr erhalten
Wenn Sie die Erfassung von Sensordaten in Ihrer App beenden möchten, verwenden Sie die Methode RecordingClient.unsubscribe
, wie im folgenden Code-Snippet gezeigt:
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. }); }