Fitnessdaten aufzeichnen

Mit der Recording API kann Ihre App durch Speichern von Abos eine automatische Sensordatenspeicherung anfordern. Ein Abo ist mit einer Android-App verknüpft 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 wenn Ihre App nicht ausgeführt wird, und stellt diese Abos wieder her, wenn das System neu gestartet wird.

Die aufgezeichneten Daten sind im Fitnessverlauf des Nutzers verfügbar. Wenn Sie die Daten in Ihrer App in Echtzeit anzeigen möchten, verwenden Sie die Sensors API zusammen mit der Recording API. Verwenden Sie die Sessions API, um Fitnessdaten mit Sitzungsmetadaten aufzuzeichnen.

Fitnessdaten abonnieren

Verwenden Sie die Methode RecordingClient.subscribe, um die Erhebung von Sensordaten im Hintergrund anzufordern. Beispiel:

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 hinzugefügt wurde, speichert Google Fit im Namen deiner App Fitnessdaten des Typs TYPE_STEP_COUNT_DELTA im Fitnessverlauf. Dieses Abo wird in der Liste der aktiven Abos für deine App angezeigt.

Wenn Sie weitere Arten von Fitnessdaten in Ihrer App abonnieren möchten, folgen Sie den Schritten im vorherigen Beispiel, geben aber jedes Mal einen anderen Fitnessdatentyp an.

Aktive Abos auflisten

Verwenden Sie die Methode RecordingClient.listSubscriptions, 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}");
            }
    });
}

Fitnessdaten abbestellen

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