건강 관리 서비스로 센서 데이터 시뮬레이션

Wear OS의 건강 관리 서비스에서 생성된 합성 데이터를 사용하여 실제로 운동을 하고 있는 것처럼 앱을 테스트합니다.

Wear OS 4 (API 33) 또는 Wear OS 3 (API 30)을 실행하는 에뮬레이터에서 테스트하는 경우 에뮬레이터에서 생성된 합성 데이터를 사용할 수 있습니다. Wear OS 3과 Wear OS 4의 합성 데이터 생성 간 차이점에 관해 자세히 알아보려면 다음 가이드를 참고하세요.

Wear OS 4에서 합성 데이터 사용

Wear OS 4 (API 33)를 실행하는 에뮬레이터에서 테스트하는 경우 에뮬레이터에서 생성된 합성 데이터를 사용하여 앱을 테스트할 수 있습니다. 이를 통해 Wear OS 3에서 합성 데이터가 생성되는 방식이 여러 가지로 개선되었습니다.

  • Wear OS 4의 합성 데이터 생성은 Health Services API 수명 주기와 통합됩니다. 즉, adb 명령어로 운동을 시작하거나 중지할 필요가 없습니다. 대신 사용자와 마찬가지로 앱 내에서 운동을 시작하거나 중지할 수 있습니다.

  • 운동 이벤트 지원 확대: 자동 일시중지 및 재개 이벤트, 낙하 이벤트, 수면 감지, 골프샷 감지 수신을 시뮬레이션할 수 있습니다.

인앱 컨트롤을 사용하여 합성 데이터 생성을 시작, 일시중지, 종료합니다.

또한 에뮬레이터는 운동마다 동일한 데이터 값을 생성합니다.

이벤트 시뮬레이션

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

각 활동에는 지원되는 측정항목에 관한 미리 설정된 항목이 있습니다.

활동 심박수 평균 속도 고도 변경 위치 사용
걷기 120bpm 1.4m/sec 20.0m/min true
실행 중 170bpm 2.3m/sec 20.0m/min true
하이킹 150bpm 1.3m/sec 20.0m/min true
수영 150bpm 1.6m/sec 0.0m/min true
러닝머신에서 달리기 160bpm 2.3m/sec 20.0m/min false

중지

합성 활동을 중지하려면 다음 명령어를 사용합니다.

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분이 걸릴 수 있습니다.