Fitnessdaten aufzeichnen

Mit der Recording API kann Ihre App die automatische Speicherung von Sensordaten in einem durch Abos zu sparen. Ein Abo ist verknüpft mit einer Android-App und besteht aus einem Fitness-Datentyp oder bestimmten Daten Quelle.

Sie können mehrere Abos für verschiedene Datentypen oder Datenquellen erstellen in Ihrer App. Google Fit speichert Fitnessdaten aus aktiven Abos, selbst wenn deine App nicht ausgeführt wird, und stellt diese Abos wieder her, wenn der das System neu gestartet wird.

Die aufgezeichneten Daten sind im Fitnessverlauf des Nutzers verfügbar. Wenn Sie auch um die Daten in Echtzeit in Ihrer App anzuzeigen, nutzen Sie die Sensors API zusammen mit der Recording API verwenden. Zum Aufnehmen Fitnessdaten mit Sitzungsmetadaten enthält, verwenden Sie Sessions API

Fitnessdaten abonnieren

Um die Erhebung von Sensordaten im Hintergrund in Ihrer App anzufordern, verwenden Sie die RecordingClient.subscribe an, 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 Daten des Typs TYPE_STEP_COUNT_DELTA im Namen Ihrer App im Fitnessverlauf. Dieses Abo erscheint in der Liste der aktiven Abos für Ihre App.

Wenn Sie weitere Arten von Fitnessdaten in Ihrer App abonnieren möchten, folgen Sie den Schritten in der aus dem vorherigen Beispiel, geben jedoch jedes Mal einen anderen Fitness-Datentyp an.

Aktive Abos auflisten

Eine Liste der aktiven Abos für Ihre App erhalten Sie über die RecordingClient.listSubscriptions an, wie im folgenden Code-Snippet gezeigt:

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

Von Fitnessdaten abmelden

Wenn Sie die Erhebung von Sensordaten in Ihrer App beenden möchten, verwenden Sie die RecordingClient.unsubscribe an, 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.
        });
}