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.
Wenn Sie einen Softwaresensor in Ihrer App erstellen möchten, erweitern Sie die Klasse FitnessSensorService
und deklarieren sie in der Manifestdatei als Dienst. 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
Wenn Sie einen Softwaresensor definieren möchten, deklarieren Sie in der Manifestdatei Ihrer App einen FitnessSensorService
:
<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 das Attribut android:process
angegeben. 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 von Ihrem jeweiligen Anwendungsfall ab. 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 } }