実行中の各仮想デバイスでは、エミュレートしたデバイス環境に対してクエリを実行したり、制御したりできるコンソールを利用できます。たとえば、コンソールを使用することで、エミュレータでアプリを実行している最中に、ポート リダイレクト、ネットワークの特性、電話のイベントを管理できます。
次のコマンドを実行するには、エミュレータがすでに実行されている必要があります。エミュレータの実行の詳細については、Android Emulator 上でアプリを実行すると、コマンドラインからエミュレータを起動するを参照してください。
コンソール セッションを開始、停止する
ターミナル ウィンドウからコンソールにアクセスしてコマンドを入力するには、telnet を使用してコンソール ポートに接続し、認証トークンを入力します。コンソールに [OK] が表示されるたびに、コマンドの受け付けが可能になります。一般的なプロンプトはありません。
実行中の仮想デバイスのコンソールに接続するには:
ターミナル ウィンドウを開き、次のコマンドを入力します。
telnet localhost console-portエミュレータ ウィンドウのタイトルには、別のウィンドウで実行しているときはコンソール ポート番号が表示されますが、ツール ウィンドウで実行しているときは表示されません。コンソール ポート番号 5554 を使用するエミュレータの場合、ウィンドウ タイトルは Pixel8_API_34:5554 になります。また、
adb devicesコマンドを使用すると、実行中の仮想デバイスとそのコンソール ポート番号のリストが出力されます。詳細については、デバイスのクエリを行うをご覧ください。注: エミュレータはポート番号 5554 ~ 5585 で接続をリッスンし、localhost からの接続のみを受け入れます。
コンソールに OK が表示されたら、
auth auth_tokenコマンドを入力します。コンソール コマンドを入力するには、エミュレータ コンソールで認証が必要です。
auth_tokenは、ホーム ディレクトリにある.emulator_console_auth_tokenファイルの内容と一致する必要があります。このファイルが存在しない場合、
telnet localhost console-portコマンドを入力すると、ランダムに生成された認証トークンを含むファイルが作成されます。認証を無効にするには、トークンを.emulator_console_auth_tokenファイルから削除するか、空のファイルを作成します(ファイルが存在しない場合)。コンソールに接続したら、コンソール コマンドを入力します。
help、help command、help-verboseのいずれかを入力すると、コンソール コマンドのリストが表示され、特定のコマンドを確認できます。コンソール セッションを終了するには、
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 firstactivitysnapshotfold: デバイスが折りたたみ式で、現在開かれている場合、デバイスを折りたたんで、小さい画面構成を表示します。
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 OKevent 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_A~KEY_Z(26 個のコード)。 - テンキーのキー:
KEY_1~KEY_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_F1~KEY_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 |
0~1767 |
X 座標(Google Pixel Fold) |
ABS_MT_POSITION_Y |
0~2207 |
Y 座標(Google Pixel Fold) |
ABS_MT_TOUCH_MAJOR |
ピクセル | タッチエリアの長軸の幅 |
ABS_MT_TOUCH_MINOR |
ピクセル | タッチエリアの短軸の幅 |
ABS_MT_WIDTH_MAJOR |
ピクセル | ツールの長軸の幅 |
ABS_MT_WIDTH_MINOR |
ピクセル | ツールの短軸の幅 |
ABS_MT_ORIENTATION |
0~255 |
接触方向の角度 |
ABS_MT_PRESSURE |
0~255 |
接触力の大きさ |
ABS_MT_DISTANCE |
mm | 画面からのホバー距離 |
ABS_MT_TOOL_TYPE |
0~2 |
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 |
0~N |
アクティブ スロット(プロトコル B) |
ABS_X / _Y / _Z |
アナログ | ジョイスティックの座標軸 |
ABS_RX / _RY / _RZ |
アナログ | ジョイスティックの回転軸 |
ABS_THROTTLE / _BRAKE |
アナログ | ペダルとステアリング コントロール |
ABS_HAT0X / _HAT0Y |
-1 / 0 / 1 |
D-pad ハット スイッチと POV スイッチ |
ABS_PRESSURE |
0~255 |
スタイラス / ポインタの押す力レベル |
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 100network 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 80network 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} phonenumbergsm パラメータは次のとおりです。- 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: アクティブなディスプレイ録画プロセスを停止します。
- start 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 シェルコマンドを実行する |
指紋のシミュレーションと検証
アプリの指紋認証をシミュレートして検証するには、finger コマンドを使用します。SDK Tools 24.3 以降、Android 6.0(API レベル 23)以降が必要です。
指紋認証をシミュレートして検証する手順は次のとおりです。
まだ指紋 ID を設定していない場合は、[Settings] > [Security] > [Fingerprint] を選択し、登録手順に沿ってエミュレータに新しい指紋を登録します。
指紋認証を受け入れるようにアプリを設定します。この設定を行うと、デバイスに指紋認証画面が表示されます。
アプリに指紋認証画面が表示されている間に、コンソールに移動して、
finger touchコマンドと作成した指紋 ID を入力します。これにより、指がセンサーに触れた状態がシミュレートされます。次に、
finger removeコマンドを入力して、指が離れた状態をシミュレートします。アプリは、実際にユーザーが指紋認証センサーに指で触れて、それから指を離したときと同じように応答する必要があります。