Sensordaten mit Gesundheitsdiensten simulieren

Verwende synthetische Daten, die von Health Services unter Wear OS generiert wurden, um deine App so zu testen, als würde tatsächlich eine Übung stattfinden.

Wenn Sie Tests auf einem Emulator mit Wear OS 4 (API 33) oder Wear OS 3 (API 30) durchführen, können Sie vom Emulator generierte synthetische Daten verwenden. Im folgenden Leitfaden findest du weitere Informationen zu den Unterschieden zwischen der Generierung synthetischer Daten für Wear OS 3 und Wear OS 4.

Synthetische Daten unter Wear OS 4 verwenden

Wenn du einen Test mit einem Emulator mit Wear OS 4 (API 33) durchführst, kannst du deine App mit synthetischen Daten testen, die vom Emulator generiert werden. Das bringt eine Reihe von Verbesserungen hinsichtlich der Generierung synthetischer Daten unter Wear OS 3 mit sich:

  • Die Generierung synthetischer Daten unter Wear OS 4 ist in den Lebenszyklus der Health Services API eingebunden. Das bedeutet, dass keine ADB-Befehle erforderlich sind, um die Übung zu starten oder zu beenden. Stattdessen können Sie die Übung in der App starten oder beenden, so wie es der Nutzer tun würde.

  • Erweiterte Unterstützung für Trainingsereignisse: Du kannst den Empfang von Ereignissen zum automatischen Pausieren und Fortsetzen, von Fällen, der Schlaferkennung und der Erkennung von Golfschlägen simulieren.

Sensorfeld für Gesundheitsdienste verwenden

Android Studio Koala Feature Drop (Canary) enthält ein Sensorfeld für Wear OS-Dienste. Das Panel kann verwendet werden, um ein Gerät zu simulieren, das bestimmte Sensorfunktionen hat oder nicht. Dies ist wichtig, wenn du Fitness-Apps unter Wear OS erstellst.

In diesem Bereich können Sie auch die Werte von Messwerten ändern und beobachten, wie sich Ihre Anwendung anpasst.

So öffnen und verwenden Sie das Steuerfeld:

  1. Erstelle oder öffne ein Android Virtual Device (AVD) und führe deine App im Emulator aus.
  2. Wählen Sie im Emulator-Steuerfeld Wear Health Services aus. Bereich mit Wear Health Services öffnen Der Bereich Wear Health Services wird geöffnet und zeigt eine Liste der Sensoren an, die auf verschiedenen Android-Geräten verfügbar sind.

Nach dem Öffnen des Steuerfelds haben Sie folgende Möglichkeiten:

  • Wechseln Sie zwischen Standardfunktionen, Alle Funktionen (Standardeinstellung) oder Benutzerdefiniert. Wählen Sie Anwenden aus, um die aktuelle Liste der Funktionen an das emulierte Gerät zu senden. Wählen Sie dann Zurücksetzen aus, um die Liste der Funktionen auf die standardmäßigen Ein-/Aus-Werte wiederherzustellen.
  • Verschiedene Nutzerereignisse auslösen, nachdem Sie die Drop-down-Schaltfläche Triggerereignisse ausgewählt haben. Hier können Sie Automatisches Pausieren/Fortsetzen von Fitnessaktivitäten auslösen, Schlafereignisse durch den Nutzer auslösen und Golfschläge auslösen, die der Nutzer auf einem Golfplatz oder Minigolf unternimmt.
  • Überschreiben Sie die Sensorwerte, nachdem Sie mit einer Übung in einer auf dem Emulator installierten App begonnen haben. Nachdem du neue Werte für verschiedene Trainingsmesswerte eingegeben hast, wähle Anwenden aus, um diese Werte mit dem Emulator zu synchronisieren. Dies ist nützlich, um zu testen, wie deine App mit verschiedenen Trainingsbedingungen und Fitnesstrends der Nutzer umgeht.

Synthetische Daten mit dem Emulator generieren

Sie können Ihre App auch ohne das Sensorfeld ausführen und Daten automatisch vom Emulator generieren lassen.

Über die Einstellungen in der App können Sie die Generierung synthetischer Daten starten, pausieren und beenden.

Beachten Sie außerdem, dass der Emulator für jede Übung die gleichen Datenwerte generiert.

Ereignisse simulieren

Sie können verschiedene Ereignisse im Emulator 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

Schlaf-Stopp erkannt

whs.STOP_SLEEPING

Golfschlag erkannt

whs.GOLF_SHOT

Sie können beispielsweise den folgenden Befehl verwenden, um ein automatisches Pause-Ereignis auszulö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 Typ des Golfschlags angeben, der im Folgenden beschrieben wird:

Art des Golfschlags

Parameter

Putttyp für den Schwung

Putt

Teiltyp des Schaukels

teilweise Maximierung

Schaukel (Kompletttyp)

voll

Fügen Sie den Schlagtyp 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

Der folgende Befehl löst beispielsweise einen teilweisen Golfschlag aus:

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 du deine App in einem Emulator mit Wear OS 3 testest, kannst du sie auch mit synthetischen Daten testen.

Generierung synthetischer Daten aktivieren

Führe 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, führen Sie die auf dieser Seite beschriebenen Befehle aus, um das Verhalten des „synthetischen Nutzers“ zu steuern.

Generierung synthetischer Daten deaktivieren

Mit dem folgenden Befehl können Sie wieder auf echte Sensoren zurückwechseln:

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
  • Läuft: whs.synthetic.user.START_RUNNING
  • Wandern: whs.synthetic.user.START_HIKING
  • Schwimmen: whs.synthetic.user.START_SWIMMING
  • Laufband (Laufband): whs.synthetic.user.START_RUNNING_TREADMILL

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

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

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

  • Schlafstatus: schlafen oder wach
  • Unfallerkennung

Start

Sende die entsprechende Übertragung an com.google.android.wearable.healthservices, um mit der Simulation einer Übung zu beginnen:

# 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äten Herzfrequenz Durchschnittliche Geschwindigkeit Höhenunterschied Standort verwenden
Gehen 120 SPM 1,4 m/s 20 m/Min. true
Laufen 170 SPM 2,3 m/s 20 m/Min. true
Wandern 150 SPM 1,3 m/s 20 m/Min. true
Schwimmen 150 SPM 1,6 m/s 0,0 m/Min. true
Laufen auf Laufband 160 SPM 2,3 m/s 20 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

Für eine genauere Kontrolle darüber, welche Messwerte generiert werden, starte 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. Standardeinstellung: 0.
  • --ei exercise_options_heart_rate <int>: Herzfrequenz in Schlägen pro Minute. Durchschnitt: 70.
  • --ef exercise_options_average_speed <float>: durchschnittliche Geschwindigkeit in Metern pro Sekunde. Wirkt sich auch auf die Schritte pro Minute oder Kadenz aus. Standardeinstellung: 0.
  • --ez exercise_options_use_location <boolean>: Gibt an, ob während des Trainings Standortdaten über eine Standardroute gesendet werden sollen. Standardeinstellung: false.
  • --ef exercise_options_max_elevation_rate <float>: die maximal mögliche Höhenänderungsrate in Metern pro Minute. Standardeinstellung: 0.

Lege zum Beispiel Trainingsoptionen so 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 oder nicht. 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 Ruhemodus-Status für den synthetischen Nutzer auslösen. Es werden zwei Zustände unterstützt: schlafend und wach.

Führen Sie den folgenden Befehl aus, um in den Ruhemodus 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 Wachzustand zu wechseln:

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

Unfallerkennung

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 die Gesundheitsdienste das Herbstereignis bereitstellen.