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

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

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

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

Wear OS 4 (API 수준 33) 이상을 실행하는 에뮬레이터에서 테스트하는 경우 에뮬레이터에서 생성된 합성 데이터를 사용하여 앱을 테스트할 수 있습니다. 이렇게 하면 이전 버전의 Wear OS에서 합성 데이터가 생성되는 방식에 비해 여러 가지 개선사항이 도입됩니다.

  • Wear OS 4 및 이후 버전의 합성 데이터 생성은 건강 관리 서비스 API 수명 주기와 통합됩니다. 즉, adb 명령어를 사용하여 연습을 시작하거나 중지할 필요가 없습니다. 대신 사용자처럼 인앱에서 운동을 시작하거나 중지할 수 있습니다.

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

건강 관리 서비스 센서 패널 사용

Android 스튜디오 Koala 기능 출시 (Canary)에는 Wear OS 센서 패널의 건강 관리 서비스가 포함되어 있습니다. 이 패널은 특정 센서 기능이 있는 기기 또는 없는 기기를 시뮬레이션하는 데 사용할 수 있으며, 이는 Wear OS에서 피트니스 앱을 빌드할 때 테스트하는 데 중요합니다.

패널을 사용하여 측정항목 값을 변경하고 앱이 어떻게 조정되는지 관찰할 수도 있습니다.

패널을 열고 사용하려면 다음 단계를 따르세요.

  1. Android Virtual Device (AVD)를 만들거나 열고 에뮬레이터에서 앱을 실행합니다.
  2. 에뮬레이터 패널에서 Wear Health Services를 선택합니다. Wear 건강 관리 서비스 패널 열기 Wear 건강 관리 서비스 패널이 열리고 다양한 Android 기반 기기에서 사용할 수 있는 센서 목록이 표시됩니다.

패널이 열리면 다음 작업을 할 수 있습니다.

  • 표준 기능모든 기능 (기본값) 간에 전환하여 다음 연습 중에 사용 설정되는 기능 집합을 선택합니다. 체크박스를 선택하여 개별 기능을 사용 설정 또는 중지할 수 있습니다. Apply를 선택하여 현재 기능 목록을 에뮬레이션된 기기로 전송하고 Reset을 선택하여 기능 목록을 기본 켜기/끄기 값으로 복원합니다.
  • 이벤트 트리거 드롭다운 버튼을 선택한 후 다양한 사용자 이벤트를 트리거합니다. 여기에서 피트니스 활동의 자동 일시중지/재개를 트리거하고, 사용자가 수면 이벤트를 트리거하고, 사용자가 골프장 또는 미니 골프장에서 찍은 골프 샷을 트리거할 수 있습니다.
  • 에뮬레이터에 설치된 앱에서 운동을 시작한 후 센서 값을 재정의합니다. 다양한 운동 측정항목의 새 값을 입력한 후 Apply(적용)를 선택하여 이러한 값을 에뮬레이터와 동기화합니다. 이는 앱이 다양한 운동 조건과 사용자의 피트니스 동향을 처리하는 방식을 테스트하는 데 유용합니다.

에뮬레이터로 합성 데이터 생성

센서 패널 없이 앱을 실행하고 에뮬레이터에서 데이터를 자동으로 생성하도록 할 수도 있습니다.

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

또한 에뮬레이터는 각 연습에 대해 동일한 데이터 값을 생성합니다.

이벤트 시뮬레이션

에뮬레이터에서 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

골프 샷 이벤트의 경우 골프 샷 스윙 유형에 관한 추가 매개변수를 지정해야 합니다. 다음은 이 매개변수에 관한 개요입니다.

골프 샷 스윙 유형

매개변수

스윙 퍼트 유형

퍼트

스윙 부분 유형

partial

스윙 전체 유형

최고 밝기

골프 샷 이벤트를 지정한 후 골프 샷 스윙 유형을 추가합니다.

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