Die Google Fit APIs, einschließlich der Google Fit REST API, werden 2026 eingestellt. Ab dem 1. Mai 2024 können sich Entwickler nicht mehr für die Verwendung dieser APIs registrieren.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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(scinsubscriptions){valdt=sc.dataTypeLog.i(TAG,"Active subscription for data type: ${dt.name}")}}
Java
Fitness.getRecordingClient(this,GoogleSignIn.getAccountForExtension(this,fitnessOptions)).listSubscriptions().addOnSuccessListener(subscriptions->{for(Subscriptionsc:subscriptions){DataTypedt=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.});}
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-25 (UTC)."],[[["\u003cp\u003eThe Recording API enables your app to automatically store sensor data in a battery-efficient way through subscriptions, which are linked to your app and specify a data type or source.\u003c/p\u003e\n"],["\u003cp\u003eGoogle Fit retains fitness data from active subscriptions even when your app is inactive, and these subscriptions are automatically restored upon system restart.\u003c/p\u003e\n"],["\u003cp\u003eYou can manage your active data subscriptions by listing existing ones and unsubscribing from specific data types as needed.\u003c/p\u003e\n"],["\u003cp\u003eTo display real-time data alongside recorded historical data in your app, consider using the Recording API in conjunction with the Sensors API.\u003c/p\u003e\n"]]],[],null,["# Record fitness data\n\nThe Recording API lets your app request automated storage of sensor data in a\nbattery-efficient manner by creating subscriptions. A subscription is associated\nwith an Android app and consists of a fitness data type or a specific data\nsource.\n\nYou can create multiple subscriptions for different data types or data sources\nin your app. Google Fit stores fitness data from active subscriptions,\neven when your app isn't running, and it restores these subscriptions when the\nsystem restarts.\n\nThe recorded data is available in the user's fitness history. If you also want\nto show the data in your app in real time, use the\n[Sensors API](/fit/android/sensors) together with the Recording API. To record\nfitness data with session metadata, use the\n[Sessions API](/fit/android/using-sessions).\n| **Note:** For best practices when you manage user data, see [Google Fit Developer and User Data Policy](/fit/policy).\n\nSubscribe to fitness data\n-------------------------\n\nTo request background collection of sensor data in your app, use the\n[`RecordingClient.subscribe`](/android/reference/com/google/android/gms/fitness/RecordingClient)\nmethod, as shown in the following code snippet: \n\n### Kotlin\n\n```kotlin\nFitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))\n // This example shows subscribing to a DataType, across all possible data\n // sources. Alternatively, a specific DataSource can be used.\n .subscribe(DataType.TYPE_STEP_COUNT_DELTA)\n .addOnSuccessListener {\n Log.i(TAG, \"Successfully subscribed!\")\n }\n .addOnFailureListener { e -\u003e\n Log.w(TAG, \"There was a problem subscribing.\", e)\n }\n```\n\n### Java\n\n```java\nFitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))\n // This example shows subscribing to a DataType, across all possible\n // data sources. Alternatively, a specific DataSource can be used.\n .subscribe(DataType.TYPE_STEP_COUNT_DELTA)\n .addOnSuccessListener(unused -\u003e\n Log.i(TAG, \"Successfully subscribed!\"))\n .addOnFailureListener( e -\u003e\n Log.w(TAG, \"There was a problem subscribing.\", e));\n```\n\nIf the subscription is added successfully, Google Fit stores fitness\ndata of type\n[`TYPE_STEP_COUNT_DELTA`](/android/reference/com/google/android/gms/fitness/data/DataType#TYPE_STEP_COUNT_DELTA)\nin the fitness history on behalf of your app. This subscription appears in the\nlist of active subscriptions for your app.\n\nTo subscribe to more types of fitness data in your app, follow the steps in the\nprevious example but provide a different fitness data type each time.\n| **Note:** Apps that run on Android 10 (API level 29) or higher must [get an Android permission](/fit/android/authorization#requesting_android_permissions) when they record some physical activity data types.\n\nList active subscriptions\n-------------------------\n\nTo get a list of the active subscriptions for your app, use the\n[`RecordingClient.listSubscriptions`](/android/reference/com/google/android/gms/fitness/RecordingClient)\nmethod, as shown in the following code snippet: \n\n### Kotlin\n\n```kotlin\nFitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))\n .listSubscriptions()\n .addOnSuccessListener { subscriptions -\u003e\n for (sc in subscriptions) {\n val dt = sc.dataType\n Log.i(TAG, \"Active subscription for data type: ${dt.name}\")\n }\n }\n```\n\n### Java\n\n```java\nFitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))\n .listSubscriptions()\n .addOnSuccessListener(subscriptions -\u003e {\n for (Subscription sc : subscriptions) {\n DataType dt = sc.getDataType();\n Log.i(TAG, \"Active subscription for data type: ${dt.name}\");\n }\n });\n}\n```\n\nUnsubscribe from fitness data\n-----------------------------\n\nTo stop the collection of sensor data in your app, use the\n[`RecordingClient.unsubscribe`](/android/reference/com/google/android/gms/fitness/RecordingClient)\nmethod, as shown in the following code snippet: \n\n### Kotlin\n\n```kotlin\nFitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))\n // This example shows unsubscribing from a DataType. A DataSource should\n // be used where the subscription was to a DataSource. Alternatively, if\n // the client doesn't maintain its subscription information, they can use\n // an element from the return value of listSubscriptions(), which is of\n // type Subscription.\n .unsubscribe(DataType.TYPE_STEP_COUNT_DELTA)\n .addOnSuccessListener {\n Log.i(TAG,\"Successfully unsubscribed.\")\n }\n .addOnFailureListener { e-\u003e\n Log.w(TAG, \"Failed to unsubscribe.\")\n // Retry the unsubscribe request.\n }\n```\n\n### Java\n\n```java\nFitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))\n // This example shows unsubscribing from a DataType. A DataSource\n // should be used where the subscription was to a DataSource.\n // Alternatively, if the client doesn't maintain its subscription\n // information, they can use an element from the return value of\n // listSubscriptions(), which is of type Subscription.\n .unsubscribe(DataType.TYPE_STEP_COUNT_DELTA)\n .addOnSuccessListener(unused -\u003e\n Log.i(TAG,\"Successfully unsubscribed.\"))\n .addOnFailureListener(e -\u003e {\n Log.w(TAG, \"Failed to unsubscribe.\");\n // Retry the unsubscribe request.\n });\n}\n```"]]