Sensordaten mit Gesundheitsdiensten simulieren

Mit synthetischen Daten, die von Health Services auf Wear OS generiert werden, können Sie Ihre App so testen, als würde ein Training tatsächlich stattfinden.

Wenn Sie auf einem Emulator mit Wear OS 3 (API-Level 30) oder höher testen, können Sie synthetische Daten verwenden, die vom Emulator generiert werden. Im folgenden Leitfaden finden Sie weitere Informationen zu den Unterschieden zwischen der Generierung synthetischer Daten für Wear OS 3 und höher.

Synthetische Daten unter Wear OS 4 und höher verwenden

Wenn Sie Ihre App auf einem Emulator mit Wear OS 4 (API-Level 33) oder höher testen, können Sie synthetische Daten verwenden, die vom Emulator generiert werden. Im Vergleich zu früheren Wear OS-Versionen gibt es einige Verbesserungen bei der Generierung synthetischer Daten:

Sensorbereich der Health Services verwenden

Android Studio Koala Feature Drop (Canary) enthält einen Sensorbereich für Health Services auf Wear OS. Mit dem Steuerfeld kann simuliert werden, ob ein Gerät bestimmte Sensorfunktionen hat oder nicht. Das ist wichtig, wenn du Fitness-Apps für Wear OS entwickelst.

Sie können das Feld auch verwenden, um die Werte von Messwerten zu ändern und zu beobachten, wie sich Ihre App anpasst.

So öffnen und verwenden Sie das Steuerfeld:

  1. Erstellen oder öffnen Sie ein Android Virtual Device (AVD) und führen Sie Ihre App auf dem Emulator aus.
  2. Wählen Sie im Emulator-Steuerfeld Wear Health Services aus. Bereich „Wear-Gesundheitsdienste“ öffnen Das Wear Health Services-Panel wird geöffnet und zeigt eine Liste der Sensoren, die auf verschiedenen Android-Geräten verfügbar sind.

Nachdem das Feld geöffnet wurde, haben Sie folgende Möglichkeiten:

  • Wechsle zwischen Standardfunktionen und Alle Funktionen (Standard), um die Funktionen auszuwählen, die während des nächsten Trainings aktiviert werden sollen. Sie können einzelne Funktionen aktivieren oder deaktivieren, indem Sie die entsprechenden Kästchen ankreuzen. Wählen Sie Anwenden aus, um die aktuelle Liste der Funktionen an das emulierte Gerät zu senden, und Zurücksetzen, um die Liste der Funktionen auf die Standardwerte für Ein/Aus zurückzusetzen.
  • Lösen Sie verschiedene Nutzerereignisse aus, nachdem Sie die Drop-down-Schaltfläche Ereignisse auslösen ausgewählt haben. Hier kannst du automatische Pausen/Fortsetzungen von Fitnessaktivitäten auslösen, Schlafereignisse auslösen und Golfschläge auslösen, die der Nutzer auf einem Golfplatz oder Minigolfplatz ausführt.
  • Sie können Sensorwerte überschreiben, nachdem Sie ein Training in einer App gestartet haben, die auf dem Emulator installiert ist. Nachdem Sie neue Werte für verschiedene Trainingsmesswerte eingegeben haben, wählen Sie Übernehmen aus, um diese Werte mit dem Emulator zu synchronisieren. Das ist nützlich, um zu testen, wie deine App mit unterschiedlichen Trainingsbedingungen und Fitnessgewohnheiten der Nutzer umgeht.

Synthetische Daten mit dem Emulator generieren

Sie können Ihre App auch ohne das Sensorbedienfeld ausführen. In diesem Fall werden die Daten automatisch vom Emulator generiert.

Mit den In-App-Steuerelementen können Sie die Generierung synthetischer Daten starten, pausieren und beenden.

Außerdem werden im Emulator für jede Übung dieselben Datenwerte generiert.

Ereignisse simulieren

Im Emulator können Sie verschiedene Ereignisse simulieren, z. B. AUTO_PAUSE_DETECTED. Mit dem folgenden Befehl können diese Ereignisse ausgelöst werden:

adb shell am broadcast -a "whs.event-key" com.google.android.wearable.healthservices

Synthetische Ereignisse

Veranstaltung

Schlüssel

Automatische Pause erkannt

whs.AUTO_PAUSE_DETECTED

Automatische Fortsetzung erkannt

whs.AUTO_RESUME_DETECTED

Sturz erkannt

whs.FALL_OVER

Schlaf erkannt

whs.START_SLEEPING

Schlafunterbrechung erkannt

whs.STOP_SLEEPING

Golfschlag erkannt

whs.GOLF_SHOT

Mit dem folgenden Befehl können Sie beispielsweise ein Ereignis zum automatischen Pausieren auslösen:

​​adb shell am broadcast -a "whs.AUTO_PAUSE_DETECTED" com.google.android.wearable.healthservices

Für Golfschlagereignisse sollten Sie zusätzliche Parameter für den Golfschlag-Schwungtyp angeben, die in der folgenden Tabelle aufgeführt sind:

Tabelle 1: Ereignisse und ihre Schlüssel

Golfschlag-Schwungtyp

Parameter

Swing-Putt-Typ

Putt

Teiltyp für Schwenkung

Teilweise

Swing-Volltyp

voll

Fügen Sie den Schwungtyp des Golfschlags hinzu, nachdem Sie das Golfschlag-Ereignis angegeben haben:

adb shell am broadcast -a "whs.GOLF_SHOT" --es golf_shot_swing_type \
  "golf-swing-type-parameter" com.google.android.wearable.healthservices

Mit dem folgenden Befehl wird beispielsweise ein teilweiser Golfschuss ausgelöst:

adb shell am broadcast -a "whs.GOLF_SHOT" --es golf_shot_swing_type "partial" \
  com.google.android.wearable.healthservices

Synthetische Daten unter Wear OS 3 verwenden

Wenn Sie auf einem Emulator mit Wear OS 3 testen, können Sie auch synthetische Daten verwenden.

Generierung synthetischer Daten aktivieren

Führen Sie die folgenden Schritte aus, um die Generierung synthetischer Daten unter Wear OS 3 zu aktivieren.

  1. Aktivieren Sie die Entwickleroptionen.
  2. Führen Sie den folgenden adb-Befehl aus, um den synthetischen Modus zu aktivieren:

    adb shell am broadcast \
    -a "whs.USE_SYNTHETIC_PROVIDERS" \
    com.google.android.wearable.healthservices
    

Sobald die Generierung synthetischer Daten aktiviert ist, können Sie mit den auf dieser Seite beschriebenen Befehlen das Verhalten des „synthetischen Nutzers“ steuern.

Generierung synthetischer Daten deaktivieren

Führen Sie den folgenden Befehl aus, um wieder echte Sensoren zu verwenden:

adb shell am broadcast \
-a "whs.USE_SENSOR_PROVIDERS" \
com.google.android.wearable.healthservices

Synthetische Übungen

Health Services unterstützt die folgenden Trainingstypen:

  • Zu Fuß:whs.synthetic.user.START_WALKING
  • Ausführung: whs.synthetic.user.START_RUNNING
  • Wandern:whs.synthetic.user.START_HIKING
  • Schwimmen:whs.synthetic.user.START_SWIMMING
  • Laufen auf einem Laufband:whs.synthetic.user.START_RUNNING_TREADMILL

Bei den Übungen werden realistische synthetische Daten für die folgenden Datentypen generiert:

  • Herzfrequenz
  • Schrittzahl pro Minute
  • GPS-Standort mit einer einzelnen Standardroute
  • Dauer der Aktivität
  • Höhe und Etagen

Außerdem können die folgenden Status generiert werden:

  • Schlafstatus: schlafend oder wach
  • Sturzerkennung

Starten

Wenn Sie mit der Simulation eines Trainings beginnen möchten, senden Sie den entsprechenden Broadcast an com.google.android.wearable.healthservices:

# start the "walking" synthetic exercise
$ adb shell am broadcast \
-a "whs.synthetic.user.START_WALKING" \
com.google.android.wearable.healthservices

Für jede Aktivität gibt es Voreinstellungen für die unterstützten Messwerte:

Aktivität Herzfrequenz Durchschnittliche Geschwindigkeit Höhenunterschied Standort verwenden
Gehen 120 bpm 1,4 m/s 20,0 m/min true
Wird ausgeführt 170 bpm 2,3 m/s 20,0 m/min true
Wandern 150 SPM 1,3 m/s 20,0 m/min true
Schwimmen 150 SPM 1,6 m/s 0,0 m/min true
Laufen auf dem Laufband 160 bpm 2,3 m/s 20,0 m/min false

Aufnahme beenden

Verwenden Sie den folgenden Befehl, um die synthetische Aktivität zu beenden:

adb shell am broadcast \
-a "whs.synthetic.user.STOP_EXERCISE" \
com.google.android.wearable.healthservices

Benutzerdefiniert

Wenn Sie genauer festlegen möchten, welche Messwerte generiert werden, starten Sie eine benutzerdefinierte Trainingsaktivität mit dem Aktionsstring whs.synthetic.user.START_EXERCISE. Geben Sie eine beliebige Kombination der folgenden Flags an:

  • --ei exercise_options_duration_secs <int>: Dauer des Trainings in Sekunden. Standard: 0.
  • --ei exercise_options_heart_rate <int>: Herzfrequenz in Schlägen pro Minute. Durchschnitt: 70.
  • --ef exercise_options_average_speed <float>: Durchschnittsgeschwindigkeit in Metern pro Sekunde. Dies wirkt sich auch auf die Schritte pro Minute oder die Schrittfrequenz aus. Standard: 0.
  • --ez exercise_options_use_location <boolean>: Gibt an, ob während des Trainings Standortdaten anhand einer Standardroute ausgegeben werden sollen. Standard: false.
  • --ef exercise_options_max_elevation_rate <float>: Die maximal mögliche Änderungsrate der Höhe in Metern pro Minute. Standard: 0.

So legen Sie beispielsweise die Optionen für Übungen fest:

adb shell am broadcast \
-a "whs.synthetic.user.START_EXERCISE" \
--ei exercise_options_heart_rate 90 \
--ef exercise_options_average_speed 1.2 \
--ez exercise_options_use_location true \
com.google.android.wearable.healthservices

Sie können auch die verfügbaren Datentypen ändern, unabhängig davon, ob die echte oder emulierte Hardware einen bestimmten Datentyp unterstützt. Sie können beispielsweise die absolute Höhe aktivieren oder deaktivieren, wie im folgenden Snippet gezeigt:

# enable synthetic mode and enable absolute elevation
$ adb shell am broadcast \
-a "whs.CONFIGURE_SYNTHETIC_DEVICE" \
--ez absolute_elevation true \
com.google.android.wearable.healthservices

# enable synthetic mode and disable absolute elevation
$ adb shell am broadcast \
-a "whs.CONFIGURE_SYNTHETIC_DEVICE" \
--ez absolute_elevation false \
com.google.android.wearable.healthservices

Andere Status und Ereignisse

Schlafstatus

Sie können auch Schlafstatus für den synthetischen Nutzer auslösen. Es werden zwei Status unterstützt: „Schlafend“ und „Wach“.

Führen Sie den folgenden Befehl aus, um in den Ruhezustand zu wechseln:

adb shell am broadcast \
-a "whs.synthetic.user.START_SLEEPING" \
com.google.android.wearable.healthservices

Führen Sie den folgenden Befehl aus, um in den aktiven Zustand zu wechseln:

adb shell am broadcast \
-a "whs.synthetic.user.STOP_SLEEPING" \
com.google.android.wearable.healthservices

Sturzerkennung

Führen Sie den folgenden Befehl aus, um einen Sturz zu simulieren:

adb shell am broadcast \
-a "whs.synthetic.user.FALL_OVER" \
com.google.android.wearable.healthservices

Es kann bis zu einer Minute dauern, bis Gesundheitsdienste das Sturzereignis übermitteln.