連載
» 2012年02月27日 11時57分 UPDATE

Android Tips(9):Androidエミュレータの状態をTelnetで操作する

Androidアプリ開発者のためのTips集。電源接続・電話着信などの状況を、「Telnet」接続により、Androidエミュレータ上で作り出すことができる。今回はその方法について紹介する。

[秋本耕平(イーフロー),@IT MONOist]
Android Tips

Tips概要と動作検証環境

用途 便利
カテゴリ 開発環境
レベル 中級
動作確認環境 Android 2.3.3(GingerBread) エミュレータにて動作確認
備考 今回のTipsは上記環境で動作確認・検証を行っています


Tips 9:Androidエミュレータの状態をTelnetで操作する

 作成したアプリケーションの動作をいろいろなバージョンのAndroidで確認する場合、Android SDKに含まれるエミュレータを用いることになる。しかし、エミュレータ単体では、電源をつなぐ・外すといったことを再現できないし、電話がかかってきた場合の挙動なども確認できない。

 実は、このような電源接続・電話着信などの状況を、「Telnet」接続により、エミュレータ上で作り出すことができる。今回はその方法について紹介する。

Windows 7でTelnetクライアントを有効にする

 今回、動作確認を行ったWindows 7環境では、Telnetクライアントがデフォルトで“無効(OFF)”になっている。まずは、Windows 7環境でTelnetクライアントを“有効(ON)”にする。手順は以下の通りだ。

  1. 「コントロールパネル」から[プログラム]―[プログラムと機能]―[Windowsの機能の有効化または無効化]を選択
  2. 「Windowsの機能」ダイアログ(画像1)が表示されたら、[Telnet クライアント]にチェックを入れて、[OK]ボタンを押す
「Windowsの機能」ダイアログ 画像1 「Windowsの機能」ダイアログ
※補足:Windows XP/Windows Vistaでも、ほぼ同じ要領でTelnetクライアントを有効にできる。


エミュレータへTelnet接続・切断するには

 AndroidエミュレータへTelnet接続するには、以下のコマンドを実行する。

    telnet localhost <ポート番号>

 エミュレータのポート番号は、「adb devices」コマンドなどで確認しておこう(画像2)。

「adb devices」コマンドでの確認 画像2 「adb devices」コマンドでの確認

 もしくは、エミュレータを実行するウィンドウのタイトルバーでもポート番号を確認できる(画像3)。

エミュレータのタイトルバー 画像3 エミュレータのタイトルバー

 エミュレータへのTelnet接続に成功すると、以下のように表示される。

    Android Console: type 'help' for a list of commands
    OK

 Telnet接続を終了する際には、「quit」と入力する。

Telnet接続でできること

 Telnet接続に成功したら「help」と入力してみよう。以下のように使用できるコマンドの一覧が表示される(画像4)。

使用できるコマンドの一覧を表示 画像4 使用できるコマンドの一覧を表示

 ハードウェアのイベントを疑似的に発生させたり、センサーの計測値、位置情報、通信の状態を変更したりできる他、通話やショートメッセージに関する操作も行える。

 画像4に示したコマンドの下には、さらに“サブコマンド”があるため、実際に実行できるものはこれらよりも多くなる。全ての機能を紹介することは難しいので、本稿では以下の4つの機能について解説する。

  • 電源状態、バッテリー残量の変更
  • 位置情報の設定
  • 電話着信のシミュレート
  • ショートメッセージ受信のシミュレート

電源状態、バッテリー残量の変更

 何もしない状態では、Androidエミュレータのバッテリー残量は50%に固定されている。エミュレータのバッテリー残量を変更するには「power capacity」コマンドを使用する。

 例えば、「power capacity 80」を実行すると、バッテリー残量が80%に変化する(画像5)。

「power capacity 80」の実行結果 画像5 「power capacity 80」の実行結果

 バッテリー表示は常に“充電中”だが、これは「power status」コマンドで変更できる。「power status not-charging」を実行すると、充電中表示から残量表示に切り替わる(画像6)。

「power status not-charging」の実行結果 画像6 「power status not-charging」の実行結果

 また、画面上では変化が分からないが、「power ac on」「power ac off」で、電源への接続状態を変更できる。アプリケーションの更新のように、電源接続中にのみ実行したい処理などの動作確認に使える。

位置情報の設定

 端末の位置情報を変更するには、

    geo fix <経度> <緯度>

を使用する。例えば、Google Mapsアプリで[現在地ボタン]を押した状態で「geo fix 139.766 35.681」を実行すると、以下のように表示される(画像7)。

東京駅(緯度35.681、経度139.766)が表示される 画像7 東京駅(緯度35.681、経度139.766)が表示される

電話着信のシミュレート

 Androidエミュレータに電話がかかってくる状態は、

    gsm call <電話番号>

でシミュレートできる。通話によるアプリケーションの中断時の動作を確認したい場合などによさそうだ。例として、「gsm call 09012345678」を実行してみると、以下のように着信画面が表示される(画像8)。また、電話に出たり、通話履歴を確認したりすることもできる(画像9)(画像10)。

「gsm call 09012345678」の実行結果電話に出ることができる (左)画像8 「gsm call 09012345678」の実行結果/(右)画像9 電話に出ることができる 
※画像8、9は実際のエミュレータ画面を左回りに90度回転させたもの

通話履歴として確認できる 画像10 通話履歴として確認できる

ショートメッセージのシミュレート

 ショートメッセージの受信は、

    sms send <電話番号> <メッセージ>

でシミュレートできる。

 メッセージには半角スペースが入っていても問題ないが、残念ながら日本語は文字化けしてしまうようだ。Telnetの文字コード設定を「UTF-8」に変更すれば化けない可能性もあるが、Windows 7のTelnetでは設定できなかった。

 以下、「sms send 09012345678 Hello Short Message !!」の実行例を示す(画像11)。

「sms send 09012345678 Hello Short Message !!」の実行結果 画像11 「sms send 09012345678 Hello Short Message !!」の実行結果

Android コーナー

Androidコーナー
「Android(アンドロイド)」の組み込み機器への適用からアプリ開発、レポート、ニュースなどさまざまな技術情報・最新動向をお届けする!!

>>コーナーTOPはこちらから


Copyright© 2017 ITmedia, Inc. All Rights Reserved.