Fitnessdaten aufzeichnen

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.
        });
}