使用健康服务模拟传感器数据

使用 Wear OS 上通过健康服务生成的合成数据对应用进行测试,就像真正运动过一样。

如果您是在搭载 Wear OS 3(API 级别 30)或更高版本的模拟器上进行测试,则可以使用模拟器生成的合成数据。请参阅以下指南,详细了解 Wear OS 3 及更高版本的合成数据生成方式之间的差异。

在 Wear OS 4 及更高版本中使用合成数据

如果您在搭载 Wear OS 4(API 级别 33)或更高版本的模拟器上进行测试,则可以使用模拟器生成的合成数据来测试应用。与在较低版本的 Wear OS 上生成合成数据的方式相比,这项功能引入了多项改进:

  • Wear OS 4 及更高版本上的合成数据生成功能已与 Health Services API 生命周期集成。这意味着,无需使用 adb 命令即可启动或停止运动。不过,您可以像用户一样在应用中开始或停止锻炼。

  • 对锻炼活动事件的支持更广泛:您可以模拟接收自动暂停和恢复事件跌倒事件睡眠检测高尔夫击球检测

使用健康服务传感器面板

Android Studio Koala 功能更新(Canary)包含 Wear OS 传感器面板上的健康服务。该面板可用于模拟具有或不具有特定传感器功能的设备,这对于在 Wear OS 上构建健身应用时进行测试非常重要。

您还可以使用该面板更改指标的值,并观察应用的调整方式。

如需打开并使用该面板,请执行以下操作:

  1. 创建或打开 Android 虚拟设备 (AVD),然后在模拟器上运行您的应用
  2. 在模拟器面板中,选择 Wear Health Services打开 Wear 健康服务面板 系统会打开 Wear 健康服务面板,其中会显示不同 Android 设备上可用的传感器列表。

该面板打开后,您可以执行以下操作:

  • 标准功能所有功能(默认)之间切换,以选择在下次运动时启用的一组功能。您可以通过选中复选框来启用或停用各项功能。选择 Apply 将当前功能列表发送到模拟设备,然后选择 Reset 将功能列表恢复为默认的开启/关闭值。
  • 选择触发事件下拉按钮后,即可触发不同的用户事件。在此处,您可以触发健身活动的自动暂停/继续、用户的睡眠事件,以及用户在高尔夫球场或迷你高尔夫球场上的高尔夫击球
  • 在模拟器上安装的应用中开始锻炼后,替换传感器值。为不同的锻炼指标输入新值后,选择应用以将这些值与模拟器同步。这对测试应用如何处理不同的锻炼条件和用户的健身趋势非常有用。

使用模拟器生成合成数据

您还可以在不使用传感器面板的情况下运行应用,并让模拟器自动生成数据。

使用应用内控件启动、暂停和结束合成数据生成。

另请注意,模拟器会为每项练习生成相同的数据值。

模拟事件

您可以在模拟器中模拟各种事件,例如 AUTO_PAUSE_DETECTED。您可以使用以下命令触发这些事件:

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

合成事件

事件

检测到自动暂停

whs.AUTO_PAUSE_DETECTED

检测到自动恢复

whs.AUTO_RESUME_DETECTED

检测到跌倒

whs.FALL_OVER

检测到睡眠

whs.START_SLEEPING

检测到睡眠停止

whs.STOP_SLEEPING

检测到高尔夫击球

whs.GOLF_SHOT

例如,您可以使用以下命令触发自动暂停事件:

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

对于高尔夫击球事件,您应为高尔夫击球挥杆类型指定其他参数,如下所述:

高尔夫击球挥杆类型

参数

挥杆推杆类型

推杆推球

秋千部分类型

部分

摇摆全类型

最亮

指定高尔夫击球事件后,添加高尔夫击球挥杆类型:

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

例如,以下命令会触发高尔夫球部分击球动作:

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

在 Wear OS 3 上使用合成数据

如果您是在搭载 Wear OS 3 的模拟器上进行测试,还可以使用合成数据来测试应用。

启用合成数据生成

如需在 Wear OS 3 上启用合成数据生成,请完成以下步骤。

  1. 启用开发者选项
  2. 发出以下 adb 命令以启用合成模式:

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

启用合成数据生成后,发出本页介绍的命令来控制“合成用户”的行为。

停用合成数据生成

如需切换回使用实际传感器,请运行以下命令:

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

合成运动

健康服务支持以下运动类型:

  • 走路whs.synthetic.user.START_WALKING
  • 跑步whs.synthetic.user.START_RUNNING
  • 远足whs.synthetic.user.START_HIKING
  • 游泳whs.synthetic.user.START_SWIMMING
  • 跑台跑步whs.synthetic.user.START_RUNNING_TREADMILL

这些运动会生成以下数据类型的实际合成数据:

  • 心率
  • 每分钟步数
  • GPS 位置(使用一条默认路线)
  • 活动时长
  • 海拔和楼层

此外,还可以生成以下状态:

  • 睡眠状态 - 睡眠或清醒
  • 跌倒检测

开始

如需开始模拟运动,请向 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

每项活动在支持的各项指标上的预设值如下:

活动 心率 平均速度 海拔变化 使用位置信息
步行 120 bpm 1.4 米/秒 20.0 米/分钟
跑步 170 bpm 2.3 米/秒 20.0 米/分钟
远足 150 bpm 1.3 米/秒 20.0 米/分钟
游泳 150 bpm 1.6 米/秒 0.0 米/分钟
跑台跑步 160 bpm 2.3 米/秒 20.0 米/分钟

停止

如需停止综合活动,请使用以下命令:

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

自定义

如需更精确地控制将要生成哪些指标,请使用操作字符串 whs.synthetic.user.START_EXERCISE 来启动自定义运动活动:提供以下标志的任意组合:

  • --ei exercise_options_duration_secs <int>:运动时长(秒)。默认值:0
  • --ei exercise_options_heart_rate <int>:心率(每分钟心跳次数)。平均值:70
  • --ef exercise_options_average_speed <float>:平均速度(米/秒)。还会影响每分钟步数或迈步频率。默认值:0
  • --ez exercise_options_use_location <boolean>:是否在运动期间发出位置数据(使用默认路线)。默认值:false
  • --ef exercise_options_max_elevation_rate <float>:可能的最大海拔变化速度(米/分钟)。默认值:0

例如,可以按照以下方式设置运动选项:

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

此外,无论实际硬件或模拟硬件是否支持某种特定数据类型,您都可以更改可用的数据类型。例如,您可以启用或停用绝对海拔,如以下代码段所示:

# 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

其他状态和事件

睡眠状态

您还可以为合成用户触发睡眠状态。支持两种状态:睡眠和清醒。

如需进入睡眠状态,请运行以下命令:

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

如需进入清醒状态,请运行以下命令:

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

跌倒检测

如需模拟跌倒情况,请运行以下命令:

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

健康服务最多可能需要 1 分钟才能提供跌倒事件数据。