エミュレータ コンソール コマンドを送信する

実行中の各仮想デバイスでは、エミュレートしたデバイス環境に対してクエリを実行したり、制御したりできるコンソールを利用できます。たとえば、コンソールを使用することで、エミュレータでアプリを実行している最中に、ポート リダイレクト、ネットワークの特性、電話のイベントを管理できます。

次のコマンドを実行するには、エミュレータがすでに実行されている必要があります。エミュレータの実行の詳細については、Android Emulator 上でアプリを実行すると、コマンドラインからエミュレータを起動するを参照してください。

コンソール セッションを開始、停止する

ターミナル ウィンドウからコンソールにアクセスしてコマンドを入力するには、telnet を使用してコンソール ポートに接続し、認証トークンを入力します。コンソールに [OK] が表示されるたびに、コマンドの受け付けが可能になります。一般的なプロンプトはありません。

実行中の仮想デバイスのコンソールに接続するには:

  1. ターミナル ウィンドウを開き、次のコマンドを入力します。

    telnet localhost console-port
    

    エミュレータ ウィンドウのタイトルには、別のウィンドウで実行しているときはコンソール ポート番号が表示されますが、ツール ウィンドウで実行しているときは表示されません。コンソール ポート番号 5554 を使用するエミュレータの場合、ウィンドウ タイトルは Pixel8_API_34:5554 になります。また、adb devices コマンドを使用すると、実行中の仮想デバイスとそのコンソール ポート番号のリストが出力されます。詳細については、デバイスのクエリを行うをご覧ください。

    注: エミュレータはポート番号 5554 ~ 5585 で接続をリッスンし、localhost からの接続のみを受け入れます。

  2. コンソールに OK が表示されたら、auth auth_token コマンドを入力します。

    コンソール コマンドを入力するには、エミュレータ コンソールで認証が必要です。auth_token は、ホーム ディレクトリにある .emulator_console_auth_token ファイルの内容と一致する必要があります。

    このファイルが存在しない場合、telnet localhost console-port コマンドを入力すると、ランダムに生成された認証トークンを含むファイルが作成されます。認証を無効にするには、トークンを .emulator_console_auth_token ファイルから削除するか、空のファイルを作成します(ファイルが存在しない場合)。

  3. コンソールに接続したら、コンソール コマンドを入力します。

    helphelp commandhelp-verbose のいずれかを入力すると、コンソール コマンドのリストが表示され、特定のコマンドを確認できます。

  4. コンソール セッションを終了するには、quit または exit と入力します。

セッションの例を次に示します。

$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
    help|h|?         Prints a list of commands
    help-verbose     Prints a list of commands with descriptions
    ping             Checks if the emulator is alive
    automation       Manages emulator automation
    event            Simulates hardware events
    geo              Geo-location commands
    gsm              GSM related commands
    cdma             CDMA related commands
    crash            Crashes the emulator instance
    crash-on-exit    Simulates crash on exit for the emulator instance
    kill             Terminates the emulator instance
    restart          Restarts the emulator instance
    network          Manages network settings  (ethernet and cellular only)
    power            Power related commands
    quit|exit        Quits control session
    redir            Manages port redirections
    sms              SMS related commands
    avd              Controls virtual device execution
    qemu             QEMU-specific commands
    sensor           Manages emulator sensors
    physics          Manages physical model
    finger           Manages emulator finger print
    debug            Controls the emulator debug output tags
    rotate           Rotates the screen clockwise by 90 degrees
    screenrecord     Records the emulator's display
    fold             Folds the device
    unfold           Unfolds the device
    multidisplay     Configures the multi-display
    nodraw           turn on/off NoDraw mode. (experimental)
    resize-display   resize the display resolution to the preset size
    virtualscene-image  customize virtualscene image for virtulscene camera
    proxy            manage network proxy server settings
    phonenumber      set phone number for the device

try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.

ファイア アンド フォーゲット コマンド

セッションを開く必要がない場合は、adb emu ショートカットを使用します。このショートカットは、コマンドを実行して、呼び出し元のシェルにすぐに制御を返します。

adb emu command commandParameter

adb emu を使用して呼び出すと、使用可能なエミュレータに接続されます。複数のエミュレータを同時に実行している場合は、ターゲットとする特定のエミュレータのシリアルを渡す必要があります。

adb -s emulator-serial emu command commandParameter

エミュレータ コマンド リファレンス

次のリストに、エミュレータ コンソール コマンドと、そのパラメータおよび値を示します。

一般コマンド

  • avd {stop| start| status| name} 以下を指定することで、仮想デバイスのクエリ、制御、管理を実行できます。

    • stop: デバイスの実行を停止します。
    • start: デバイスの実行を開始します。
    • status: 仮想デバイスのステータス(実行中または停止)をクエリします。
    • name: 仮想デバイス名をクエリします。
  • avd snapshot {list| save name| load name| delete name} 以下を指定することで、スナップショットでデバイスの状態を保存したり、状態を復元したりできます。

    • list: 保存されたすべてのスナップショットをリストします。
    • save name: スナップショットを name として保存します。
    • load name: 指定した名前のスナップショットを読み込みます。
    • delete name: 指定した名前のスナップショットを削除します。

    次の例では、firstactivitysnapshot という名前でスナップショットを保存しています。

    avd snapshot save firstactivitysnapshot
    
  • fold: デバイスが折りたたみ式で、現在開かれている場合、デバイスを折りたたんで、小さい画面構成を表示します。

  • unfold: デバイスを開いて、大きな画面構成を表示します(デバイスが折りたたみ式で、現在閉じられている場合)。

  • kill: 仮想デバイスを終了します。

  • ping: 仮想デバイスが実行されているかどうかを確認します。

  • rotate: AVD を反時計回りに 45 度ずつ回転させます。

エミュレータのクラッシュ

  • crash: アプリの実行中にエミュレータをクラッシュさせます。

  • crash-on-exit: アプリの終了時にエミュレータをクラッシュさせます。

デバッグタグ

  • デバッグタグ ...: エミュレータの特定部分からのデバッグ メッセージを有効または無効にします。tags パラメータは、emulator -help-debug-tags を実行したときに表示されるデバッグタグのリストに存在する値である必要があります。-help-debug-tags オプションの詳細については、よく使用されるオプションの表をご覧ください。次の例では、ラジオタグを有効にしています。

    debug radio
    

ポート リダイレクト

  • redir list: 現在のポート リダイレクトをリストします。

  • redir add protocol:host-port:guest-port 以下を指定することで、新しいポート リダイレクトを追加できます。

    • protocol: tcp または udp のいずれかである必要があります。
    • host-port: ホスト上で開くポート番号。
    • guest-port: データのルーティング先となる、エミュレータ上のポート番号。
  • redir del protocol:host-port ポート リダイレクトを削除します。

    • protocol: tcp または udp のいずれかである必要があります。
    • host-port: ホスト上で開くポート番号。

地域

エミュレータに GPS フィックスを送信して、エミュレータ内で実行されているアプリにレポートする地理的位置を設定します。

仮想デバイスが実行されるとすぐに、次のいずれかの geo コマンドを発行できます。エミュレータは、仮の現在地情報プロバイダを作成して、入力した位置情報を設定します。このプロバイダは、アプリによって設定された位置情報リスナーに応答し、LocationManager に位置情報を提供します。どのアプリも LocationManager.getLastKnownLocation("gps") を呼び出すことで、位置情報マネージャーにクエリを行い、エミュレートしたデバイスの現在の GPS フィックスを取得できます。

  • geo fix longitude latitude [altitude] [satellites] [velocity]: エミュレータにシンプルな GPS 修正を送信します。経度と緯度を 10 進数で指定します。1 ~ 12 の数字を使用して、位置決定に使用する衛星の数を指定し、高度(メートル単位)と速度(ノット単位)を指定します。

  • geo nmea sentence: エミュレートした GPS モデムからの送信であるかのように、エミュレートしたデバイスに NMEA 0183 センテンスを送信します。文は「$GP」で始めます。現在、「$GPGGA」文と「$GPRCM」文のみがサポートされています。次の例は、GPS 受信機の時刻、位置、修正データを取得する GPGGA(グローバル ポジショニング システムの修正データ)文です。

    geo nmea $GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
    

疑似ハードウェア イベント

エミュレータ コンソールのハードウェア イベント サブシステムを使用すると、デバイスとの物理的なインタラクションをほぼすべてシミュレートできます。これには、物理ボタン、画面のタッチ/ジェスチャー、ロータリー ダイヤル、ジョイスティック入力、ハードウェア スイッチが含まれます。

  • イベントタイプ: すべての疑似イベントタイプをリストします。コードを持つイベントの場合、コード番号は右側の括弧内にリストされます。出力例:

    event types
    event <type> can be an integer or one of the following aliases:
        EV_SYN
        EV_KEY    (405 code aliases)
        EV_REL    (2 code aliases)
        EV_ABS    (27 code aliases)
        EV_MSC
        EV_SW     (4 code aliases)
        EV_LED
        EV_SND
        EV_REP
        EV_FF
        EV_PWR
        EV_FF_STATUS
        EV_MAX
    OK
    
  • event send types [types ...]: 1 つ以上の疑似イベントタイプを送信します。

  • イベントコードのタイプ: 指定した疑似イベントタイプのイベントコードをリストします。

  • event send type[:code]:[value] [...]: オプションのコードとコード値を持つ、1 つ以上の疑似イベントを送信します。

EV_KEY - キーコード リファレンス

EV_KEY イベントタイプは、ボタンの押下とリリースをシミュレートするために使用されます。次の表では、サポートされているキーコードの膨大なリストを論理カテゴリに分類しています。各キーコードについて、値 1 をディスパッチすると押下がシミュレートされ、値 0 をディスパッチするとリリースがシミュレートされます。値 2 はキーリピートを表します。

サブテーブル A: Android システムキー
コード 説明
KEY_HOME ホームボタンのトリガー
KEY_BACK 戻るボタン トリガー
KEY_MENU メニュー(オーバーフロー)ボタン
KEY_POWER 電源ボタン(押す/長押し)
KEY_VOLUMEUP 音量大ボタンのトリガー
KEY_VOLUMEDOWN 音量小ボタンのトリガー
KEY_CAMERA 物理的なカメラのシャッター ボタン
KEY_FOCUS カメラのオートフォーカス シャッター
KEY_SEARCH 検索ボタンのトリガー
KEY_SLEEP Sleep コマンドのトリガー
KEY_WAKEUP ウェイクアップ コマンドのトリガー
KEY_NOTIFICATION 通知ドロワーを開く
KEY_MUTE システムオーディオ出力をミュートする
KEY_MICMUTE マイク入力をミュートする
KEY_BRIGHTNESSDOWN ディスプレイの明るさを下げる
KEY_BRIGHTNESSUP ディスプレイの明るさを上げる
KEY_PHONE デフォルトの電話アプリを開く
KEY_SEND 電話を送信または開始する
KEY_HEADSETHOOK ヘッドセット フック(応答/通話終了)
KEY_SCREEN スクリーンセーバーのアクティブ コマンド
KEY_CONFIG 構成システム メニュー
KEY_SWITCHVIDEOMODE システム動画モードを切り替える
KEY_KBDILLUMTOGGLE キーボード バックライトを切り替える
サブテーブル B: メディアと再生のコントロール
コード 説明
KEY_PLAYPAUSE 再生と一時停止の状態を切り替える
KEY_PLAY メディアの再生を開始する
KEY_PAUSECD CD の再生を一時停止する
KEY_STOPCD CD の再生を停止する
KEY_NEXTSONG 次のトラックにスキップする
KEY_PREVIOUSSONG 前のトラックにスキップ
KEY_REWIND アクティブなトラックを巻き戻す
KEY_FASTFORWARD アクティブなトラックを早送りする
KEY_RECORD レコード トリガー コマンド
KEY_SHUFFLE シャッフル再生を切り替える
KEY_REPEAT 繰り返し再生を切り替える
KEY_MEDIA メディアキー トリガー
サブテーブル C: ナビゲーションと一般的なキーボード
コード 説明
KEY_UP D-pad 上方向
KEY_DOWN D-pad 下方向
KEY_LEFT D-pad 左方向
KEY_RIGHT D-pad の右方向
KEY_PAGEUP ページアップ ナビゲーション
KEY_PAGEDOWN PageDown ナビゲーション
KEY_INSERT キー トリガーを挿入する
KEY_DELETE キー トリガーを削除
KEY_ENTER Enter キーのトリガー
KEY_ESC Escape キーのトリガー
KEY_TAB Tab キーのトリガー
KEY_SPACE Space キーのトリガー
KEY_BACKSPACE Backspace キーのトリガー
KEY_CLEAR 入力バッファをクリアする
KEY_CANCEL アクティブなアクションをキャンセルする
KEY_OK 選択を確定/OK
KEY_SELECT アイテム トリガーを選択する
KEY_GOTO 指定された場所に移動する
KEY_HELP ヘルプ コンテキストにアクセスする
サブテーブル D: 英数字とキーパッドの記号
  • 標準のアルファベット文字: KEY_AKEY_Z(26 個のコード)。
  • テンキーのキー: KEY_1KEY_0(10 個のコード)。
コード 文字記号
KEY_COMMA ,
KEY_DOT .
KEY_SLASH /
KEY_SEMICOLON ;
KEY_APOSTROPHE '
KEY_GRAVE \`
KEY_MINUS -
KEY_EQUAL =
KEY_LEFTBRACE [
KEY_RIGHTBRACE ]
KEY_BACKSLASH \
KEY_KPASTERISK *(テンキー)
KEY_KPPLUS +(テンキー)
KEY_KPMINUS -(テンキー)
KEY_KPDOT .(テンキー)
KEY_KPSLASH /(テンキー)
KEY_KPENTER Enter(テンキー)
KEY_KPEQUAL =(テンキー)
KEY_KPCOMMA ,(テンキー)
KEY_KPJPCOMMA ,(日本語レイアウト)
KEY_KPLEFTPAREN ((テンキー)
KEY_KPRIGHTPAREN )(テンキー)
KEY_KPPLUSMINUS ±(テンキー)
サブテーブル E: 修飾キーとファンクション キー
  • 標準のファンクション キー: KEY_F1KEY_F24(24 個のコード)。
コード 説明
KEY_LEFTSHIFT 左 Shift キーボード修飾キー
KEY_RIGHTSHIFT キーボードの右 Shift キーの修飾子
KEY_LEFTCTRL 左 Ctrl キーのキーボード修飾子
KEY_RIGHTCTRL キーボードの右 Ctrl キーの修飾子
KEY_LEFTALT 左 Alt キーの修飾キー
KEY_RIGHTALT 右 Alt キーの修飾キー
KEY_LEFTMETA 左 Meta/Command キー
KEY_RIGHTMETA 右 Meta/Command キー
KEY_CAPSLOCK CapsLock キーボードの切り替え
KEY_NUMLOCK Num Lock キーボードの切り替え
KEY_SCROLLLOCK Scroll Lock キーボードの切り替え
KEY_COMPOSE Compose 文字ヘルパー
KEY_FN 物理キーボードの FN キー
KEY_FN_ESC ファンクション キーの組み合わせ
KEY_FN_1 特殊機能のショートカット 1
KEY_FN_2 特殊機能のショートカット 2
KEY_FN_D 特殊機能ショートカット D
KEY_FN_E 特殊機能ショートカット E
KEY_FN_F 特殊機能のショートカット F
KEY_FN_S 特殊機能ショートカット S
KEY_FN_B 特殊機能ショートカット B
サブテーブル F: ゲームパッドとジョイスティック
コード 説明
BTN_A / BTN_B / BTN_C コントローラの前面ボタン A/B/C
BTN_X / BTN_Y / BTN_Z コントローラの前面ボタン X/Y/Z
BTN_START ゲームパッドのスタート メニュー ボタン
BTN_SELECT ゲームパッドの選択ボタン
BTN_MODE コントローラ モードの切り替え
BTN_TL / BTN_TR 左 / 右ショルダー バンパー
BTN_TL2 / BTN_TR2 左 / 右のアナログ トリガー
BTN_THUMBL / BTN_THUMBR 左 / 右スティック クリック
BTN_DPAD_UP ゲームパッドの D-pad 上トリガー
BTN_DPAD_DOWN ゲームパッドの D-pad 下トリガー
BTN_DPAD_LEFT ゲームパッドの D-pad 左トリガー
BTN_DPAD_RIGHT ゲームパッドの D-pad 右トリガー
BTN_THUMB ジョイスティックのメインの親指トリガー
BTN_TOP / BTN_TOP2 ジョイスティックの上部ボタン
BTN_PINKIE ジョイスティックの小指ボタンのトリガー
BTN_BASE_BASE6 ジョイスティック プラットフォーム ベースボタン
BTN_DEAD ゲームパッドのデッドゾーンが無効なフラグ
BTN_TRIGGER 物理的なジョイスティックのハンドトリガー
BTN_JOYSTICK 汎用ジョイスティック入力コード
サブテーブル G: マウス、タップ、タッチペン入力
コード 説明
BTN_MOUSE 一般的なマウスポインタ イベント
BTN_LEFT 左マウスボタンをクリック
BTN_RIGHT 右マウスボタンをクリック
BTN_MIDDLE スクロール ホイールの中央ボタンをクリック
BTN_SIDE ナビゲーション サイドキー トリガー
BTN_EXTRA 追加のマウスボタンのトリガー
BTN_FORWARD ブラウザの「進む」ナビゲーションのクリック
BTN_BACK ブラウザの「戻る」ナビゲーションのクリック
BTN_TASK システム タスク切り替えキー
BTN_TOUCH 画面への物理的な接触が検出されました
BTN_STYLUS アクティブ スタイラス ペンの近接
BTN_STYLUS2 タッチペンのセカンダリ バレルスイッチ
BTN_TOOL_PEN スタイラス ペンツールの識別子
BTN_TOOL_RUBBER タッチペン消しゴムツールの識別子
BTN_TOOL_BRUSH ペインター ブラシツールの識別子
BTN_TOOL_PENCIL 製図用鉛筆ツールの識別子
BTN_TOOL_AIRBRUSH エアブラシ ペイントツールの識別子
BTN_TOOL_FINGER タッチ スクリーンに指が触れている
BTN_TOOL_MOUSE 外部マウスツールの識別子
BTN_TOOL_LENS 光学拡大レンズツール
BTN_TOOL_DOUBLETAP ジェスチャーのダブルタップ速度フラグ
BTN_TOOL_TRIPLETAP 操作のトリプルタップの速度フラグ
サブテーブル H: アプリケーションのショートカット
コード ターゲット アクション
KEY_WWW デフォルトのウェブブラウザを起動する
KEY_MAIL デフォルトのメール クライアントを開く
KEY_BOOKMARKS ブラウザのブックマーク リストを開く
KEY_CALC 電卓ユーティリティを開きます
KEY_FILE ローカル ファイル エクスプローラを開きます
KEY_EDIT ドキュメント編集トリガー
KEY_NEW ドキュメントの新規作成トリガー
KEY_OPEN ドキュメントを開くトリガー
KEY_SAVE ファイル保存タスクのトリガー
KEY_CLOSE ファイル クローズ タスク トリガー
KEY_PRINT ファイル印刷タスク トリガー
KEY_COPY クリップボード バッファのコピー アクション
KEY_PASTE クリップボード バッファの挿入アクション
KEY_CUT クリップボード バッファの切り取りアクション
KEY_UNDO クリップボード バッファの元に戻すアクション
KEY_REDO クリップボード バッファのやり直しアクション
KEY_CANCEL バッファのキャンセル プロセスのトリガー
KEY_FIND ドキュメント検索ユーティリティ
KEY_REFRESH ドキュメント更新ユーティリティ
KEY_EXIT ドキュメントを閉じるユーティリティ
KEY_DOCUMENTS システム ドキュメント ポータルを起動します
KEY_HOMEPAGE ホームページ ブラウザを起動する
KEY_FAVORITES ブラウザのお気に入りのポータルを開く
KEY_CHAT インスタント メッセンジャーを起動します
KEY_EMAIL 予備のメールアドレスのリリース トリガー
KEY_FINANCE 株価/金融ユーティリティを開く
KEY_SPORT スポーツ記録ユーティリティを開く
KEY_SHOP デジタル ショッピング ポータルを開く
KEY_PLAYER メインのメディア プレーヤーを開く
KEY_MP3 メインの MP3 プレーヤーを開く
KEY_TEXT デフォルトのテキスト エディタを開く
KEY_LIST チェックリスト ユーティリティを開く
KEY_MEMO メモ帳 / メモ ユーティリティを開く
KEY_CALENDAR カレンダー / 予定リスト ポータルを開く
KEY_DIRECTORY システムのアドレス ディレクトリを開きます
KEY_COMPUTER 仕様エクスプローラを開く
KEY_TV / KEY_TV2 テレビ ポータルを起動する
KEY_RADIO ラジオ ユーティリティを起動します
KEY_CD / KEY_DVD 光学ドライブ リーダーを有効にする
KEY_AUDIO / KEY_VIDEO メディア仕様にアクセスする
KEY_TUNER レシーバ/チューナーを構成します
KEY_SAT / KEY_SAT2 衛星フィードを構成します
KEY_TAPE テープ メディアの再生に関する資料
KEY_VCR VCR プレーヤー フィードを再生する
KEY_VCR2 VCR 2 プレーヤー フィードを再生する
KEY_AUX 補助メディア ポート入力
KEY_SETUP 設定構成メニュー
KEY_PROG1_PROG4 ユーザー定義のプログラムキー
KEY_ZOOM ビューポートのズーム切り替え
KEY_MODE ビューポート モードの選択
KEY_KEYBOARD 仮想キーボードの表示/非表示
KEY_LANGUAGE 音声トラックの言語を切り替える
KEY_TITLE メディア タイトルのオプションを開く
KEY_SUBTITLE 字幕のインターフェースを切り替える
KEY_ANGLE 動画カメラの角度を変更する
KEY_EPG 電子番組ガイドを開く
KEY_PVR パーソナル動画レコーダーを開く
KEY_MHP マルチメディア ホーム プラットフォームを開く
KEY_CHANNEL テレビ チューナーのチャンネルを開く
KEY_CHANNELUP テレビ チャンネルを上にチューニング
KEY_CHANNELDOWN テレビ チャンネルを下にチューニング
KEY_RED 赤色のインタラクティブ ボタン
KEY_GREEN 緑色のインタラクティブ ボタン
KEY_YELLOW 黄色のインタラクティブ ボタン
KEY_BLUE 青色のインタラクティブ ボタン
KEY_FIRST 最初のアイテム オプションを選択する
KEY_LAST 最後のアイテム オプションを選択
KEY_NEXT 次のトラック オプションを選択
KEY_PREVIOUS 前のトラック オプションを選択
KEY_RESTART メディア トラック ループを再開する
KEY_SLOW スローモーション再生オプション
KEY_AB A-B リピート シーケンス ループ
KEY_PLAYCD CD デッキの再生コマンド
KEY_PAUSECD CD デッキの一時停止コマンド
KEY_STOPCD CD デッキの停止コマンド
KEY_DIGITS デジタル キーパッド入力コマンド
KEY_TEEN キーパッドの 10 代向けの値のオプション
KEY_TWEN キーパッドの twen 値オプション
KEY_DEL_EOL 行の末尾まで削除
KEY_DEL_EOS 画面バッファの末尾まで削除
KEY_INS_LINE 新しい行バッファを挿入
KEY_BRL_DOT1_DOT8 点字ディスプレイのボタン入力
KEY_VOICECOMMAND 音声アシスタント アプリを起動する
KEY_SELECTIVE_SCREEN 領域のスクリーンショットをトリガーする
KEY_BATTERY バッテリーに関する通知をクエリします
KEY_STAR / KEY_SHARP 電話のキーパッドの記号
KEY_PLUS 電話のキーパッドとプラス記号
KEY_INFO 情報パネルのオーバーレイを表示
KEY_TIME 現在の時計の時刻を表示する
KEY_VENDOR ベンダーの仕様をクエリする
KEY_ARCHIVE ローカル アーカイブ ユーティリティを開きます
KEY_PROGRAM プログラム パラメータを構成します
KEY_POWER2 バックアップ電源をトリガーする

EV_ABS - 絶対モーション イベント

EV_ABS イベントタイプは、正確なタップ、ドラッグ&ドロップ ジェスチャー、マルチタッチ ピンチ操作、ジョイスティック調整をシミュレートするうえで重要です。以下の絶対座標は、基盤となる物理画面の解像度に直接マッピングされます。

コード 座標範囲 説明
ABS_MT_TRACKING_ID -1 または ≥0 トラッキング ID。-1 タッチを終了
ABS_MT_POSITION_X 01767 X 座標(Google Pixel Fold)
ABS_MT_POSITION_Y 02207 Y 座標(Google Pixel Fold)
ABS_MT_TOUCH_MAJOR ピクセル タッチエリアの長軸の幅
ABS_MT_TOUCH_MINOR ピクセル タッチエリアの短軸の幅
ABS_MT_WIDTH_MAJOR ピクセル ツールの長軸の幅
ABS_MT_WIDTH_MINOR ピクセル ツールの短軸の幅
ABS_MT_ORIENTATION 0255 接触方向の角度
ABS_MT_PRESSURE 0255 接触力の大きさ
ABS_MT_DISTANCE mm 画面からのホバー距離
ABS_MT_TOOL_TYPE 02 0=finger、1=pen、2=pencil
ABS_MT_BLOB_ID integer 連絡先 BLOB ID
ABS_MT_TOOL_X ピクセル ツールの X 座標
ABS_MT_TOOL_Y ピクセル ツールの Y 座標
ABS_MT_SLOT 0N アクティブ スロット(プロトコル B)
ABS_X / _Y / _Z アナログ ジョイスティックの座標軸
ABS_RX / _RY / _RZ アナログ ジョイスティックの回転軸
ABS_THROTTLE / _BRAKE アナログ ペダルとステアリング コントロール
ABS_HAT0X / _HAT0Y -1 / 0 / 1 D-pad ハット スイッチと POV スイッチ
ABS_PRESSURE 0255 スタイラス / ポインタの押す力レベル
ABS_DISTANCE mm ホバー距離(タッチペン)
ABS_TILT_X / _TILT_Y タッチペンの傾斜角度
ABS_VOLUME アナログ コントローラの音量レベル

Android のタッチ操作は、マルチタッチ(MT)プロトコルによって駆動されます。最新のエミュレータは、プロトコル A(ステートレス、同期マークで区切られた連絡先パケットを送信)とプロトコル B(ステートフル、連絡先を専用のトラッキング スロットに割り当て)の両方を実装しています。プロトコル B では、ピンチズームなどのジェスチャーで複数の同時タッチを効率的に追跡できます。

EV_REL と EV_SW - モーションとハードウェア スイッチ

EV_REL イベント カテゴリは、相対ポインタまたは座標の変更を管理します。これは主に、外部マウスの動きやスクロール ホイールのエミュレートに使用されます。EV_SW イベント カテゴリは、フリップ式スマートフォンやタブレットが折りたたまれているかどうか、外部オーディオ ハードウェアが挿入されているかどうかなど、実機のスイッチを管理します。

コード 説明
REL_X Delta 水平方向のカーソル移動
REL_Y Delta 縦方向のカーソルの移動
SW_LID 0/1 ノートパソコンの蓋のステータス(0=開いている、1=閉じている)
SW_TABLET_MODE 0/1 タブレット モードのステータス(0=オフ、1=有効)
SW_HEADPHONE_INSERT 0/1 ヘッドフォン端子のステータス(0=出力、1=入力)
SW_MICROPHONE_INSERT 0/1 マイクジャックのステータス(0=出力、1=入力)
コマンド ディスパッチの構文

これらのコードをディスパッチするには、コンソール コマンドの形式を「タイプ:コード:値」のようにコロンで区切ります。1 つの文字列で複数の座標変更をキューに入れることができます。重要なのは、エミュレータ フレームワークがこれらの入力をまとめてバンドルして処理することを示すために、常に最終同期マーク(EV_SYN:0:0)を追加することです。

イベント スクリプトとジェスチャーの例

Telnet ではマルチパート パラメータを送信できるため、現実的な物理ジェスチャー シーケンスをシミュレートできます。以下は、ホスト コンソールからジェスチャーを自動化するための未加工のイベント スクリプトの構造です。

画面タップのシミュレーション

ターゲット座標でクリーンな画面タップを実行するには、トラッキング ID を割り当て、画面上の X 座標と Y 座標を指定し、接触タッチをシミュレートして同期し、リリースします。

# Press down at coordinate (400, 800) and sync
event send EV_ABS:ABS_MT_TRACKING_ID:1
OK
event send EV_ABS:ABS_MT_POSITION_X:400
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Lift finger up and sync
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
縦スクロール(スワイプ)のシミュレーション

スクロール スワイプ操作を実行するには、開始座標で接触を保持し、中間移動座標フレームを送信して、終了時にリリースします。

# Finger touch down at start coordinate (500, 1600)
event send EV_ABS:ABS_MT_TRACKING_ID:2
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1600
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Move coordinates upward dynamically
event send EV_ABS:ABS_MT_POSITION_Y:1200
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:400
OK
event send EV_SYN:0:0
OK
# Finger release at coordinate (500, 400)
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
ピンチ操作でズームするジェスチャーをシミュレートする

2 本指ズームをトリガーするには、アクティブな MT スロット(0 と 1)を使用して、互いに離れていく 2 つの同時タッチ座標をトラッキングして調整します。

# Finger 1 down at (500, 1000) using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:10
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Finger 2 down at (600, 1000) using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:11
OK
event send EV_ABS:ABS_MT_POSITION_X:600
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_SYN:0:0
OK
# Fingers slide apart from each other
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_POSITION_X:300
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_POSITION_X:800
OK
event send EV_SYN:0:0
OK
# Lift Finger 1 using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_SYN:0:0
OK
# Lift Finger 2 using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
ヘッドフォン接続の切り替えをシミュレートする

ヘッドフォン端子の挿入または取り外しをシミュレートして、オーディオ ルーティング スイッチをテストします。値 1 はイヤホン差込口の挿入を表し、0 はヘッドフォンの取り外しを表します。

# Simulate headphones plugged in
event send EV_SW:SW_HEADPHONE_INSERT:1 EV_SYN:0:0
OK
# Simulate headphones unplugged
event send EV_SW:SW_HEADPHONE_INSERT:0 EV_SYN:0:0
OK
実機からコンソール イベント コードを検出する

カスタム アクションまたはボタン ジェスチャーの正確なイベント構文シーケンスを検出するには、adb shell を介して接続し、getevent 診断ユーティリティを実行します。エミュレータの GUI を操作すると、コンソールに正確なイベントコード、タイプ、位置が出力されます。

# Run getevent to monitor input events dynamically
adb shell getevent -lt
/dev/input/event12: EV_KEY       KEY_POWER            DOWN
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
/dev/input/event12: EV_KEY       KEY_POWER            UP
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
  • イベント テキスト メッセージ: キー押下をシミュレートする文字列を送信します。メッセージは UTF-8 文字列にする必要があります。Unicode の場合、現在のデバイスのキーボードに従って逆マッピングされ、サポートされていない文字は警告もなく破棄されます。

電源状態の制御

  • power display: バッテリーと充電器の状態を表示します。

  • power ac {on| off}: AC 充電の状態をオンまたはオフに設定します。

  • 電源ステータス {unknown| charging| discharging| not-charging| full}: バッテリー ステータスを指定したとおりに変更します。

  • power present {true| false}: バッテリーの有無の状態を設定します。

  • power health {unknown| good| overheat| dead| overvoltage| failure}: バッテリー ヘルスの状態を設定します。

  • power capacity percent: バッテリー容量の残量の状態を 0 ~ 100 パーセントで設定します。

ネットワーク接続のステータス(イーサネットとモバイルのみ)

  • network status: ネットワークのステータス、現在の遅延、速度の特性を確認します。

  • network delay latency エミュレートしたネットワーク レイテンシを変更します。

    エミュレータを使用すると、さまざまなネットワーク レイテンシ レベルをシミュレートできるため、実際の実行条件に近い環境でアプリをテストできます。エミュレータの起動時にレイテンシのレベルまたは範囲を設定するか、アプリの実行中にエミュレータでコンソールを使用してレイテンシを変更できます。

    ネットワーク レイテンシの形式は次のいずれかです(数値単位はミリ秒)。

    ネットワーク レイテンシの形式:

  • gprs: GPRS、150~550 のレイテンシ範囲を使用します。

  • edge: EDGE/EGPRS、80 ~ 400 のレイテンシ遅延範囲を使用します。

  • umts: UMTS / 3G、35~200 のレイテンシ範囲を使用します。

  • none: レイテンシなし。

  • num: 指定されたレイテンシをミリ秒単位でエミュレートします。

  • min:max: 指定されたレイテンシ範囲をエミュレートします。

    エミュレータの起動時にレイテンシを設定するには、サポートされているレイテンシ値を使用して -netdelay エミュレータ オプションを指定します。例:

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    エミュレータの実行中にネットワークの遅延を変更するには、コンソールに接続し、network delay コマンドを使用します。

    network delay gprs
    network delay 40 100
    
  • network speed speed エミュレータを使用すると、さまざまなネットワーク転送速度をシミュレートできます。エミュレータの起動時に転送の速度または範囲を設定するか、エミュレータでアプリの実行中にコンソールを使用して転送速度を変更できます。

    ネットワーク速度は次のいずれかの形式で指定します(数値単位はキロビット/秒)。

    ネットワーク速度の形式:

  • gsm: GSM / CSD、上り 14.4、下り 14.4 の速度を使用します。

  • hscsd: HSCSD、上り 14.4、下り 43.2 の速度を使用します。

  • gprs: GPRS、上り 40.0、下り 80.0 の速度を使用します。

  • edge: EDGE / EGPRS、上り 118.4、下り 236.8 の速度を使用します。

  • umts: UMTS / 3G、上り 128.0、下り 1920 の速度を使用します。

  • hsdpa: HSDPA、上り 348.0、下り 14,400.0 の速度を使用します。

  • lte: LTE、上り 58,000、下り 173,000 の速度を使用します。

  • evdo: EVDO、上り 75,000 と下り 280,000 の速度を使用します。

  • full: 速度は無制限ですが、コンピュータの接続速度に依存します。

  • num: アップロードとダウンロードの両方に使用される正確な速度をキロビット/秒で設定します。

  • up:down: アップロードとダウンロードそれぞれの正確な速度をキロビット/秒で設定します。

    エミュレータの起動時にネットワーク速度を設定するには、-netspeed エミュレータ オプションを使用します。例:

    emulator -netspeed gsm @Pixel_API_26
    emulator -netspeed 14.4,80 @Pixel_API_26
    

    エミュレータの実行中にネットワーク速度を変更するには、コンソールに接続して network speed コマンドを使用します。

    network speed 14.4 80
    
  • network capture {start| stop} file パケットをファイルに送信します。パラメータとパラメータ値の説明を以下に示します。

    注: Android Emulator 36.5 以降では、Wi-Fi 接続トラフィックはデフォルトで netsim によって処理されます。ネットワーク キャプチャ コンソール コマンドは、QEMU slirp スタック経由でルーティングされたレガシーの携帯通信/WAN トラフィックのみをキャプチャします。最新のエミュレータ バージョンで Wi-Fi、Bluetooth、高度なネットワーク パケットをキャプチャするには、高度なエミュレータ ネットワーキング ガイドのネットワーク トラフィックのキャプチャをご覧ください。

  • start file: ネットワーク パケットのキャプチャを開始します。セキュリティのため、ファイルはファイル名のみ(/ などのパス区切り文字や .. はなし)である必要があります。パケット キャプチャ ファイルは、AVD のコンテンツ ディレクトリの console_out/ フォルダ(例: ~/.android/avd/avd_name.avd/console_out/file)に保存されます。

  • stop file: 指定されたファイルへのパケットの送信を停止します。

電話のエミュレーション

Android emulator には、エミュレータで電話機能をシミュレートできる独自の GSM および CDMA をエミュレートしたモデムが含まれています。たとえば、GSM を使用すると、電話の着信のシミュレートや、データ接続の確立と終了が可能です。CDMA を使用する場合は、サブスクリプション ソースと優先ローミング リストを指定します。Android システムは、実際の通話とまったく同じようにシミュレートされた通話を処理します。エミュレータは通話音声をサポートしていません。

  • gsm {call| accept| cancel| busy} phonenumber gsm パラメータは次のとおりです。

    • call: phonenumber からの電話の着信をシミュレートします。
    • accept: phonenumber からの電話の着信を受け付けて、通話状態をアクティブに変更します。現在の状態が waiting または held の場合にのみ、通話状態を active に変更できます。
    • cancel: phonenumber との間の電話の着信または発信を終了します。
    • busy: phonenumber への電話の発信を終了し、通話状態を busy に変更します。現在の状態が waiting の場合にのみ、通話状態を busy に変更できます。
  • gsm {data| voice} state データ状態コマンドは GPRS データ接続の状態を変更し、音声状態コマンドは GPRS 音声接続の状態を変更します。

    • unregistered: 利用可能なネットワークがありません。
    • home: ローカル ネットワークに接続中、非ローミング。
    • roaming: ローミング ネットワークに接続中。
    • searching: ネットワークの検索中。
    • denied: 緊急通報のみ。
    • off: unregistered と同じ。
    • on: home と同じ。
  • gsm hold: 通話の状態を保留に変更します。現在の状態がアクティブまたは待機中の場合にのみ、通話状態を保留に変更できます。

  • gsm list: すべての電話の着信および発信とその状態をリストします。

  • gsm status: 現在の GSM の音声とデータの状態をレポートします。値については、音声コマンドとデータコマンドの説明をご覧ください。

  • gsm signal {rssi| ber} 次の 15 秒間の更新における、レポートされる信号強度(rssi)と符号誤り率(ber)を変更します。パラメータとその値の説明を以下に示します。

    • rssi: 範囲は 0 ~ 31 で、不明の場合は 99 です。
    • ber: 範囲は 0 ~ 7 で、不明の場合は 99 です。
  • gsm signal-profile num: 信号強度プロファイルを設定します。num は 0 ~ 4 の数字です。

  • cdma ssource source 現在の CDMA サブスクリプション ソースを設定します。ここで、source は、以下のように、CDMA 通信事業者の加入者とその値が含まれるネットワークベースの許可リストです。

    • nv: 不揮発性 RAM からサブスクリプションを読み取ります。
    • ruim: Removable User Identity Module(RUIM)からサブスクリプションを読み取ります。
  • cdma prl_version version: 現在の優先ローミング リスト(PRL)バージョンをダンプします。バージョン番号は、システムの選択と取得のプロセス中に使用される情報が含まれる PRL データベース用です。

エミュレータでセンサーを管理する

これらのコマンドは、AVD で使用可能なセンサーに関連します。センサー コマンドを使用する以外に、[Accelerometer] タブと [Additional sensors] タブの [Virtual sensors] 画面で、エミュレータの設定を表示および調整できます。

  • sensor status: すべてのセンサーとそのステータスをリストします。

  • sensor get sensor-name: sensor-name の設定を取得します。次の例では、加速度センサーの値を取得します。

    sensor get acceleration
    acceleration = 2.23517e-07:9.77631:0.812348
    

    コロン(:)で区切られた加速度の値は、仮想センサーの x、y、z 座標を指しています。

  • sensor set sensor-name value-x:value-y:value-z: sensor-name の値を設定します。次の例では、加速度センサーを、コロンで区切られた x、y、z 値に設定しています。

    sensor set acceleration 2.23517e-07:9.77631:0.812348
    

SMS エミュレーション

  • sms send sender-phone-number textmessage エミュレートされた着信 SMS を生成します。パラメータとその値の説明を以下に示します。

    • sender-phone-number: 任意の数値文字列が含まれます。
    • textmessage: SMS メッセージ。

    次の例では、メッセージ「hi there」を電話番号 4085555555 に送信しています。

    sms send 4085555555 hi there
    

コンソールは、SMS メッセージを Android フレームワークに転送します。Android フレームワークは、エミュレータのアプリ(メッセージ アプリなど)にメッセージを渡し、そのアプリが SMS を処理します。10 桁の番号を渡すと、アプリはその番号を電話番号の形式に合わせます。数値文字列が 10 桁でない場合は、その番号が送信された方法が表示されます。

指紋シミュレーション

  • finger touch fingerprint-id: 指がセンサーに触れた状態をシミュレートします。

  • finger remove: 指が離れた状態をシミュレートします。

これらのコマンドの使用方法については、次の指紋のシミュレーションと検証のセクションをご覧ください。

スクリーン レコード

screenrecord コマンドを使用すると、エミュレータの物理ディスプレイの高画質動画ファイルをホストシステムから直接キャプチャできます。これは、継続的インテグレーション パイプラインや自動バグレポートに非常に役立ちます。

  • screenrecord {start| stop} file ディスプレイの録画プロセスを開始または停止します。
    • start file: 動画の録画を開始します。出力ファイルの末尾には、必須の .webm 拡張子を付ける必要があります。キャプチャされた動画は、AVD のコンソール出力ディレクトリ(~/.android/avd/avd_name.avd/console_out/file)の直下に保存されます。
    • stop file: アクティブなディスプレイ録画プロセスを停止します。

自動化とマクロ

自動化サブシステムを使用すると、デベロッパーは実行中の仮想デバイスでマクロの状態遷移を記録し、再生して自動テストフローを実行できます。

  • automation {record| stop-record| play| stop-play} 自動マクロ録画を管理します。
    • record: デバイスの状態の変化と入力を記録し始めます。
    • stop-record: 現在のマクロ録画セッションを停止します。
    • play: 記録されたマクロ シーケンスの再生を開始します。
    • stop-play: アクティブなマクロ再生シーケンスを停止します。

物理学(6DoF)

物理コマンドは、高度なモーション トラッキングのシミュレーションに使用される 6 自由度(6DoF)の物理運動モデルのグラウンド トゥルース空間ポーズのロギングを管理します。

  • physics {record-gt| stop} 物理ポーズモデルの録画を管理します。
    • record-gt: グラウンド トゥルースの 6DoF 動作データの記録を開始します。
    • stop: 現在のグラウンド トゥルースの記録プロセスを停止します。

高度なデバイス制御

このセクションでは、ネットワーク プロキシ、マルチディスプレイ構成、レンダリングのオーバーライド、ハイパーバイザの直接デバッグなど、高度なエミュレーション構成用の高度に特殊化されたコンソール コマンド エンドポイントをまとめています。

  • multidisplay {add| del} マルチスクリーン構成をテストするために、セカンダリ仮想モニターを追加または削除します。注: Google Pixel Fold やサイズ変更可能なエミュレータなどの折りたたみ式プロファイルでは、セカンダリ モニターはサポートされていません。

  • proxy {set| clear} コンソールからネットワーク プロキシ転送をプログラムで構成します。

    • set host port: ターゲット プロキシ設定を構成します。
    • clear: プロキシ構成をデフォルトにリセットします。注: プロキシ設定オペレーションは、ヘッドレス実行環境では失敗します。
  • virtualscene-image {wall| table} image_path 仮想シーンのカメラフィードに表示される背景の壁や水平のテーブルを、カスタム ユーザー画像ファイルでカスタマイズします。

  • resize-display scale 画面の解像度をプリセットされたスケール間で動的に調整します。注: 解像度の調整は、ヘッドレス構成ではサポートされていません。

  • nodraw {on| off} ホスト画面での物理 GUI レンダリングを無効にして、大量のバックグラウンド ヘッドレス自動化実行中のシステム メモリと GPU の負荷を軽減します。

  • grpc port カスタム gRPC ポート エンドポイントを介した高度なプログラムによるデバイス制御を構成します。

  • qemu monitor 基盤となるハイパーバイザのコンソールに直接インタラクティブ ターミナル アクセスを提供します。このコマンドは、アクティブな Telnet コンソール セッションでのみ入力できます。

  • icebox track pid 指定されたアプリプロセスで未処理の例外またはクラッシュが発生した場合に、自動システム スナップショットを有効にします。

  • phonenumber number 対象デバイスの仮想ローカル電話番号を設定します。

gRPC プログラマティック インターフェース

最新のエミュレータ バージョンでは、従来の Telnet コンソールに加えて、強力な gRPC プログラマティック インターフェースがサポートされています。Telnet コンソールは、迅速なインタラクティブ セッションやシンプルなスクリプト作成に最適ですが、gRPC インターフェースは、継続的インテグレーション(CI)環境とヘッドレス環境での高性能で安全かつ堅牢な自動制御用に設計されています。gRPC は直接サービス エンドポイントを提供することで、テキスト ストリームの解析、ターミナル セッション ハンドシェイクの管理、暗号化されていない localhost ポートの公開を不要にします。

従来の Telnet コンソールと最新の gRPC プログラマティック インターフェースのどちらを選択するかを判断するには、パフォーマンス、セキュリティ、機能の次の比較を確認してください。

機能 Telnet コンソール gRPC インターフェース
最適な用途 手動デバッグ、インタラクティブ セッション。 ヘッドレス CI/CD、大規模な自動テストリグ。
速度 遅い。テキストのオーバーヘッド、接続のレイテンシ。 最適化された多重化 HTTP/2、高速プロトコル。
セキュリティ 暗号化なし。ローカルポート(5554 ~ 5585)。 TLS で保護でき、ネットワーク上で動作します。
ストリーム サポートされていません。リクエスト / レスポンスのみ。 logcat、ゲスト音声キャプチャのストリーム。
メディア 出力ファイルをホスト/ゲスト ディスクに書き込みます。 有線バイナリ バッファを直接使用します。
ゲスト OS 固定エミュレータ コマンドに制限されています。 ネイティブ ゲストの bash シェルコマンドを実行します。

gRPC の起動と呼び出し

gRPC エンドポイントを使用するには、コマンドラインから Android Emulator を起動し、ターゲット ループバック ポートを指定する -grpc フラグを含めます。

# Start the emulator with the gRPC service enabled on port 8556
emulator -grpc localhost:8556 @Pixel_Fold

gRPC サービスを有効にしてエミュレータを実行したら、プログラムで RPC 呼び出しを行うことができます。コマンドライン テストでは、grpcurl ユーティリティを使用してエミュレータのサービスと通信します。すべてのリクエストは JSON 形式で、プレーンテキストで送信されます。

# Query the status of the virtual device using grpcurl
grpcurl -plaintext -d '{}' localhost:8556 \
  android.emulation.control.EmulatorController/getStatus

# Simulate an incoming phone call
grpcurl -plaintext -d '{"operation": "InitCall", "number": "1234567890"}' localhost:8556 \
  android.emulation.control.EmulatorController/sendPhone

# Simulate typing text into the guest OS
grpcurl -plaintext -d '{"text": "Hello"}' localhost:8556 \
  android.emulation.control.EmulatorController/sendKey

Telnet コンソールから gRPC サービスへのマッピング

次のリファレンス テーブルは、以前の Telnet コンソール コマンドを対応する gRPC サービスとメソッドにマッピングし、一般的な仮想デバイスのインタラクションをプログラムで自動化する方法を示しています。

カテゴリ 以前の Telnet コマンド gRPC サービス / メソッド
ステータス ping EmulatorController/getStatus
ステータス avd name incubating.AvdService/getAvdInfo
ステータス kill EmulatorController/setVmState
ステータス restart EmulatorController/setVmState
電源 power display EmulatorController/getBattery
電源 power capacity EmulatorController/setBattery
Geo Loc geo fix EmulatorController/setGps
センサー sensor set incubating.SensorService/setSensor
生体認証システム finger touch EmulatorController/sendFingerprint
姿勢 posture EmulatorController/setPosture
姿勢 physics / fold EmulatorController/setPhysicalModel
SMS sms send EmulatorController/sendSms
GSM 通話 gsm call EmulatorController/sendPhone
GSM 通話 phonenumber EmulatorController/setPhoneNumber
リダイレクト redir add Waterfall/ForwardPort
入力 event send EV_KEY EmulatorController/sendKey
入力 event send EV_ABS EmulatorController/sendTouch
メディア screenrecord incubating.ScreenRecording
レンダリング nodraw EmulatorController/setDisplayMode
スナップショット avd snapshot list SnapshotService/ListSnapshots
スナップショット avd snapshot load/save SnapshotService/LoadSnapshot

gRPC 固有のプログラム コマンド

gRPC インターフェースは、従来の Telnet コンソール接続では物理的に実行できない最先端の機能をいくつか提供します。これには、logcat の直接ストリーミング、双方向の音声キャプチャまたは挿入、ホスト GUI の変更、シェルへの直接アクセスが含まれます。

gRPC サービス / メソッド パラメータ 能力
streamLogcat {"maxLines": 100} ゲスト システムの logcat 出力をストリーミングする
streamAudio {} スピーカーの音声をネットワーク経由でストリーミングする
injectAudio {"audio": "..."} マイクの音声ストリームを挿入します
UiController {"theme": "DARK"} ホスト ウィンドウのウィンドウ テーマを変更します
Waterfall/Exec {"cmd": "ls"} ネイティブ ゲスト OS シェルコマンドを実行する

指紋のシミュレーションと検証

図 1. 指紋認証画面。

アプリの指紋認証をシミュレートして検証するには、finger コマンドを使用します。SDK Tools 24.3 以降、Android 6.0(API レベル 23)以降が必要です。

指紋認証をシミュレートして検証する手順は次のとおりです。

  1. まだ指紋 ID を設定していない場合は、[Settings] > [Security] > [Fingerprint] を選択し、登録手順に沿ってエミュレータに新しい指紋を登録します。

  2. 指紋認証を受け入れるようにアプリを設定します。この設定を行うと、デバイスに指紋認証画面が表示されます。

  3. アプリに指紋認証画面が表示されている間に、コンソールに移動して、finger touch コマンドと作成した指紋 ID を入力します。これにより、指がセンサーに触れた状態がシミュレートされます。

  4. 次に、finger remove コマンドを入力して、指が離れた状態をシミュレートします。アプリは、実際にユーザーが指紋認証センサーに指で触れて、それから指を離したときと同じように応答する必要があります。