ヘルスサービスでセンサーデータをシミュレートする

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 Feature Drop(Canary)には、Wear OS センサー パネルのヘルスサービスが含まれています。このパネルを使用すると、特定のセンサー機能を備えたデバイスと備えていないデバイスをシミュレートできます。これは、Wear OS でフィットネス アプリを構築する際にテストすることが重要です。

このパネルを使用して指標の値を変更し、アプリの調整状況を確認することもできます。

パネルを開いて使用する手順は次のとおりです。

  1. Android Virtual Device(AVD)を作成または開き、エミュレータでアプリを実行します。
  2. エミュレータ パネルで [Wear Health Services] を選択します。Wear ヘルス サービス パネルを開く [Wear ヘルスサービス] パネルが開き、さまざまな Android デバイスで利用可能なセンサーのリストが表示されます。

パネルが開いたら、次の操作を行うことができます。

  • [標準機能] と [すべての機能](デフォルト)を切り替えて、次の演習で有効にする機能のセットを選択します。チェックボックスを選択して、個々の機能を有効または無効にできます。[適用] を選択して、現在の機能のリストをエミュレートされたデバイスに送信し、[リセット] を選択して、機能のリストをデフォルトのオン / オフの値に復元します。
  • [イベントをトリガー] プルダウン ボタンを選択して、さまざまなユーザー イベントをトリガーします。ここで、フィットネス アクティビティの自動一時停止/再開をトリガーしたり、ユーザーによる睡眠イベントをトリガーしたり、ユーザーがゴルフ場やミニゴルフ場で行ったゴルフショットをトリガーしたりできます。
  • エミュレータにインストールされているアプリでエクササイズを開始した後に、センサー値をオーバーライドします。さまざまなエクササイズ指標の新しい値を入力したら、[適用] を選択して、これらの値をエミュレータと同期します。これは、アプリがさまざまなエクササイズの条件やユーザーのフィットネス傾向をどのように処理するかをテストするのに役立ちます。

エミュレータで合成データを生成する

センサーパネルなしでアプリを実行し、エミュレータによってデータを自動生成することもできます。

アプリ内コントロールを使用して、合成データの生成を開始、一時停止、終了します。

また、エミュレータはエクササイズごとに同じデータ値を生成します。

イベントをシミュレートする

エミュレータでは、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

ゴルフショット イベントの場合は、ゴルフショットのスイング タイプの追加パラメータを指定する必要があります。以下に概要を示します。

ゴルフショットのスイングタイプ

パラメータ

スイング パットのタイプ

パット

スイングの部分タイプ

部分的

スイング フルタイプ

100%

ゴルフショット イベントを指定した後に、ゴルフショットのスイングタイプを追加します。

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

エクササイズでは、次のデータ型について現実的な合成データが生成されます。

  • 心拍数
  • 1 分あたりの歩数
  • 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 m/sec 20.0 m/min
ランニング 170 bpm 2.3 m/sec 20.0 m/min
ハイキング 150 bpm 1.3 m/sec 20.0 m/min
水泳 150 bpm 1.6 m/sec 0.0 m/min
トレッドミル ランニング 160 bpm 2.3 m/sec 20.0 m/min ×

停止する

合成アクティビティを停止するには、次のコマンドを使用します。

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>: 1 分あたりの心拍数。平均: 70
  • --ef exercise_options_average_speed <float>: 平均速度(メートル/秒)。これは 1 分あたりの歩数(ケイデンス)にも影響します。デフォルト: 0
  • --ez exercise_options_use_location <boolean>: エクササイズ中に位置情報を出力するかどうか(デフォルト ルートを使用)。デフォルト: false
  • --ef exercise_options_max_elevation_rate <float>: 1 分あたりの最大高度変化率(メートル/分)。デフォルト: 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

その他の状態とイベント

睡眠状態

合成ユーザーの睡眠状態をトリガーすることもできます。睡眠と覚醒の 2 つの状態がサポートされています。

睡眠状態に入るには、次のコマンドを実行します。

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 分かかる場合があります。