Zusätzliche Sensoren unterstützen
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Fitnessgeräte, die über ein standardmäßiges Bluetooth Low Energy
GATT
Profilen werden automatisch von Google Fit unterstützt. Wenn Ihr Gerät
keines dieser Profile implementiert, können Sie eine Android-App erstellen,
die Kommunikation mit dem Fitnessgerät verwaltet und diese
Google Fit als Softwaresensor. Sie können auch benutzerdefinierte Software bereitstellen,
Sensoren in Ihrer App.
Um einen Softwaresensor in Ihrer App zu erstellen, erweitern Sie
FitnessSensorService
-Klasse und in der Manifestdatei als Dienst deklarieren. Wenn Nutzer Ihre
App nutzen, stellt Google Fit Ihre Softwaresensoren für andere Apps zur Verfügung.
Wenn sich eine App für den Empfang von Daten
von einem Softwaresensor registriert,
Google Fit wird an Ihren Dienst gebunden.
Sensordienst deklarieren
Um einen Softwaresensor zu definieren, deklarieren Sie einen
FitnessSensorService
in der Manifestdatei Ihrer App:
<service android:name="com.example.MySensorService"
android:process=":sensor">
<intent-filter>
<action android:name="com.google.android.gms.fitness.service.FitnessSensorService" />
<!-- include at least one mimeType filter for the supported data types -->
<data android:mimeType="vnd.google.fitness.data_type/com.google.heart_rate.bpm" />
</intent-filter>
</service>
Der Dienst in diesem Beispiel wird in einem separaten Prozess ausgeführt, wie durch den
android:process
. Weitere Informationen finden Sie unter
Prozesse.
Sensordienst implementieren
Erweitern Sie zum Implementieren eines Softwaresensors die FitnessSensorService
-Klasse und
abstrakte Methoden implementieren. Die Details der Implementierung hängen davon ab,
bestimmten Anwendungsfall. Das folgende Beispiel enthält jedoch allgemeine Richtlinien:
Kotlin
class MySensorService : FitnessSensorService() {
override fun onCreate() {
super.onCreate()
// 1. Initialize your software sensor(s).
// 2. Create DataSource representations of your software sensor(s).
// 3. Initialize some data structure to keep track of a registration
// for each sensor.
}
override fun onFindDataSources(dataTypes: List<DataType>): List<DataSource> {
// 1. Find which of your software sensors provide the data types requested.
// 2. Return those as a list of DataSource objects.
}
override fun onRegister(request: FitnessSensorServiceRequest): Boolean {
// 1. Determine which sensor to register with request.dataSource.
// 2. If a registration for this sensor already exists, replace it with
// this one.
// 3. Keep (or update) a reference to the request object.
// 4. Configure your sensor according to the request parameters.
// 5. When the sensor has new data, deliver it to the platform by
// calling request.dispatcher.publish(dataPoints)
}
override fun onUnregister(dataSource: DataSource): Boolean {
// 1. Configure this sensor to stop delivering data to the platform
// 2. Discard the reference to the registration request object
}
}
Java
public class MySensorService extends FitnessSensorService {
@Override
public void onCreate() {
super.onCreate();
// 1. Initialize your software sensor(s).
// 2. Create DataSource representations of your software sensor(s).
// 3. Initialize some data structure to keep track of a registration
// for each sensor.
}
@NonNull
@Override
public List<DataSource> onFindDataSources(@NonNull List<DataType> list) {
// 1. Find which of your software sensors provide the data types
// requested.
// 2. Return those as a list of DataSource objects.
}
@Override
public boolean onRegister(
@NonNull FitnessSensorServiceRequest fitnessSensorServiceRequest) {
// 1. Determine which sensor to register with request.dataSource.
// 2. If a registration for this sensor already exists, replace it with
// this one.
// 3. Keep (or update) a reference to the request object.
// 4. Configure your sensor according to the request parameters.
// 5. When the sensor has new data, deliver it to the platform by
// calling request.getDispatcher.publish(dataPoints);
}
@Override
public boolean onUnregister(@NonNull DataSource dataSource) {
// 1. Configure this sensor to stop delivering data to the platform
// 2. Discard the reference to the registration request object
}
}
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2025-08-31 (UTC).
[null,null,["Zuletzt aktualisiert: 2025-08-31 (UTC)."],[[["\u003cp\u003eGoogle Fit automatically supports fitness devices using standard Bluetooth Low Energy GATT profiles.\u003c/p\u003e\n"],["\u003cp\u003eFor devices lacking standard profiles, an Android app can bridge communication with Google Fit using software sensors.\u003c/p\u003e\n"],["\u003cp\u003eSoftware sensors are created by extending the \u003ccode\u003eFitnessSensorService\u003c/code\u003e class and declaring it as a service in the app's manifest.\u003c/p\u003e\n"],["\u003cp\u003eGoogle Fit exposes your software sensors to other apps upon installation, facilitating data sharing.\u003c/p\u003e\n"],["\u003cp\u003eImplementation of a software sensor involves initializing sensors, handling data source requests, and managing sensor registration and data delivery.\u003c/p\u003e\n"]]],[],null,["# Support additional sensors\n\nFitness devices that implement a standard [Bluetooth Low Energy\nGATT](https://www.bluetooth.com/bluetooth-resources/intro-to-bluetooth-gap-gatt/)\nprofile are automatically supported by Google Fit. If your device\ndoesn't implement one of these profiles, you can create an Android app that\nmanages the communication with the fitness device and exposes it to\nGoogle Fit as a software sensor. You can also expose custom software\nsensors in your app.\n\nTo create a software sensor in your app, you extend the\n[`FitnessSensorService`](/android/reference/com/google/android/gms/fitness/service/FitnessSensorService)\nclass and declare it as a service in the manifest file. When users install your\napp, Google Fit makes your software sensors available to other apps.\nWhen an app registers to receive data from a software sensor in your app,\nGoogle Fit binds to your service.\n| **Note:** For best practices when you manage user data, see [Google Fit Developer and User Data Policy](/fit/policy).\n\nDeclare a sensor service\n------------------------\n\nTo define a software sensor, declare a\n[`FitnessSensorService`](/android/reference/com/google/android/gms/fitness/service/FitnessSensorService)\nin your app's manifest file: \n\n```carbon\n\u003cservice android:name=\"com.example.MySensorService\"\n android:process=\":sensor\"\u003e\n \u003cintent-filter\u003e\n \u003caction android:name=\"com.google.android.gms.fitness.service.FitnessSensorService\" /\u003e\n \u003c!-- include at least one mimeType filter for the supported data types --\u003e\n \u003cdata android:mimeType=\"vnd.google.fitness.data_type/com.google.heart_rate.bpm\" /\u003e\n \u003c/intent-filter\u003e\n\u003c/service\u003e\n```\n\nThe service in this example runs in a separate process, as specified by the\n[`android:process`](https://developer.android.com/guide/topics/manifest/service-element#proc)\nattribute. For more information, see\n[Processes](https://developer.android.com/guide/components/processes-and-threads#Processes).\n\nImplement a sensor service\n--------------------------\n\nTo implement a software sensor, extend the `FitnessSensorService` class and\nimplement its abstract methods. The details of the implementation depend on your\nparticular use case, but the following example provides general guidelines: \n\n### Kotlin\n\n```kotlin\nclass MySensorService : FitnessSensorService() {\n override fun onCreate() {\n super.onCreate()\n // 1. Initialize your software sensor(s).\n // 2. Create DataSource representations of your software sensor(s).\n // 3. Initialize some data structure to keep track of a registration\n // for each sensor.\n }\n\n override fun onFindDataSources(dataTypes: List\u003cDataType\u003e): List\u003cDataSource\u003e {\n // 1. Find which of your software sensors provide the data types requested.\n // 2. Return those as a list of DataSource objects.\n }\n\n override fun onRegister(request: FitnessSensorServiceRequest): Boolean {\n // 1. Determine which sensor to register with request.dataSource.\n // 2. If a registration for this sensor already exists, replace it with\n // this one.\n // 3. Keep (or update) a reference to the request object.\n // 4. Configure your sensor according to the request parameters.\n // 5. When the sensor has new data, deliver it to the platform by\n // calling request.dispatcher.publish(dataPoints)\n }\n\n override fun onUnregister(dataSource: DataSource): Boolean {\n // 1. Configure this sensor to stop delivering data to the platform\n // 2. Discard the reference to the registration request object\n }\n}\n```\n\n### Java\n\n```java\npublic class MySensorService extends FitnessSensorService {\n @Override\n public void onCreate() {\n super.onCreate();\n // 1. Initialize your software sensor(s).\n // 2. Create DataSource representations of your software sensor(s).\n // 3. Initialize some data structure to keep track of a registration\n // for each sensor.\n }\n\n @NonNull\n @Override\n public List\u003cDataSource\u003e onFindDataSources(@NonNull List\u003cDataType\u003e list) {\n // 1. Find which of your software sensors provide the data types\n // requested.\n // 2. Return those as a list of DataSource objects.\n }\n\n @Override\n public boolean onRegister(\n @NonNull FitnessSensorServiceRequest fitnessSensorServiceRequest) {\n // 1. Determine which sensor to register with request.dataSource.\n // 2. If a registration for this sensor already exists, replace it with\n // this one.\n // 3. Keep (or update) a reference to the request object.\n // 4. Configure your sensor according to the request parameters.\n // 5. When the sensor has new data, deliver it to the platform by\n // calling request.getDispatcher.publish(dataPoints);\n }\n\n @Override\n public boolean onUnregister(@NonNull DataSource dataSource) {\n // 1. Configure this sensor to stop delivering data to the platform\n // 2. Discard the reference to the registration request object\n }\n}\n```"]]