MonkeyDevice

monkeyrunner を実行しているワークステーションからアクセス可能なデバイスまたはエミュレータを表す monkeyrunner クラス。

このクラスは、Android デバイスまたはエミュレータを制御するために使用されます。このメソッドは UI イベントの送信、情報の取得、アプリケーションのインストールと削除、アプリケーションの実行を行います。

通常、MonkeyDevice インスタンスを作成する必要はありません。代わりに、 MonkeyRunner.waitForConnection() を使用して、デバイスまたはエミュレータへの接続から新しいオブジェクトを作成します。たとえば、以下のようにインスタンスを作成するのではなく、

    newdevice = MonkeyDevice()
    

以下のようにオブジェクトを作成します。

    newdevice = MonkeyRunner.waitForConnection()
    

概要

定数
string DOWN type の引数 press() または touch() と一緒に使用して DOWN イベントを送信します。
string UP type の引数 press() または touch() と一緒に使用して UP イベントを送信します。
string DOWN_AND_UP type の引数 press() または touch() と一緒に使用して DOWN イベントを送信し、直後に UP イベントを送信します。
メソッド
void broadcastIntent (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)
アプリケーションから送信されたかのように、インテントをこのデバイスにブロードキャストします。
void drag (tuple start, tuple end, float duration, integer steps)
デバイスの画面上でのドラッグ ジェスチャー(タッチ、ホールド、移動)を再現します。
object getProperty (string key)
システム環境変数名を指定すると、このデバイスにおけるその変数の値を返します。 使用可能な変数名は、このメソッドの詳細説明に一覧で示しています。
object getSystemProperty (string key)
. adb shell getprop <key>. This is provided for use by platform developers. と同等の API
void installPackage (string path)
packageFile 内の Android アプリケーションやテスト パッケージをこのデバイスにインストールします。そのアプリケーションやテスト パッケージがすでにインストールされていた場合、それと置き換えます。
dictionary instrument (string className, dictionary args)
Android インストゥルメンテーションで指定されているコンポーネントを実行します。そして、実行されたコンポーネントが出力した形式とまったく同じ形式で、ディクショナリ型の結果を返します。コンポーネントは、このデバイスにすでに存在している必要があります。
void press (string name, dictionary type)
type で指定されたキーイベントを keycode によって指定されたキーへ送信します。
void reboot (string into)
このデバイスを bootloadType で指定したブートローダーに再起動します。
void removePackage (string package)
指定したパッケージ(そのデータとキャッシュも含めて)をこのデバイスから削除します。
object shell (string cmd)
adb シェルコマンドを実行し、結果があればそれを返します。
void startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags)
渡された引数から作成したインテントを送信することで、このデバイス上でアクティビティを起動します。
MonkeyImage takeSnapshot()
このデバイスの全画面バッファをキャプチャし、現在表示されている画面のキャプチャを含む MonkeyImage オブジェクトを生成します。
void touch (integer x, integer y, integer type)
type で指定されたタッチイベントを、x と y で指定された画面位置に送信します。
void type (string message)
デバイス上のキーボードから入力されたかのように、message 内に含まれている文字をこのデバイスへ送信します。これは、キーイベント タイプ DOWN_AND_UP を使って、message 内の各キーコードの press() を呼び出すのと同じです。
void wake ()
このデバイスの画面を復帰させます。

定数

string DOWN

press() または touch() の値。 キーを押すか、画面に触れる動作に対応して、DOWN イベントタイプをデバイスに送信するように指定します。

string UP

press() または touch() の値。 キーを離すか、画面から離す動作に対応して、UP イベントタイプをデバイスに送信するように指定します。

string DOWN_AND_UP

press()touch()、または type() の値。 キーの入力や画面のクリックに対応して、DOWN イベントタイプに続いて UP イベントタイプをデバイスに送信するように指定します。

パブリック メソッド

void broadcastIntent ( string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)

アプリケーションから送信されたかのように、インテントをこのデバイスへブロードキャストします。引数について詳しくは、Intent をご覧ください。

引数
uri このインテントの URI (Intent.setData() を参照)。
action このインテントのアクション(Intent.setAction() を参照)。
data このインテントのデータ URI(Intent.setData() を参照)。
mimetype このインテントの MIME タイプ(Intent.setType() を参照)。
categories このインテントのカテゴリを定義する文字列を含んだ、イテラブル データ構造(Intent.addCategory() を参照)。
extras このインテントの追加データのディクショナリ型(例は Intent.putExtra() を参照)。

各ディクショナリ項目のキーは string 型でなければなりません。項目の値は、単純なデータ型もしくは構造化されたデータ型にすることができます。

component このインテントのコンポーネント(ComponentName を参照)。この引数を使うことで、このインテントを特定の Android パッケージ内の特定のクラスに誘導できます。
flags このインテントの処理方法を制御するフラグを含む、イテラブル データ構造(Intent.setFlags() を参照)。

void drag ( tuple start, tuple end, float duration, integer steps)

デバイスの画面上でのドラッグ ジェスチャー(タッチ、ホールド、移動)を再現します。

引数
start ドラッグ ジェスチャーの開始点。(x,y) のタプル形式。x と y は数値型。
end ドラッグ ジェスチャーの終点。(x,y) のタプル形式。x と y は数値型。
duration ドラッグ ジェスチャーの秒単位での継続時間。デフォルトの値は 1.0 秒。
steps 点と点の間を補完するのに必要なステップ数。デフォルトの値は 10。

object getProperty (string key)

システム環境変数名を指定すると、このデバイスにおけるその変数の値を返します。

引数
key システム環境変数の名前。使用可能な変数名は、このトピックの最後にある表 1. プロパティ変数名に一覧で示されています。
戻り値
  • 変数の値。データ形式は、要求された変数によって異なります。

object getSystemProperty (string key)

getProperty() と同義。

引数
key システム環境変数の名前。使用可能な変数名は、このトピックの最後にある表 1. プロパティ変数名に一覧で示されています。
戻り値
  • 変数の値。データ形式は、要求された変数によって異なります。

void installPackage (string path)

packageFile 内の Android アプリケーションやテストパッケージをこのデバイスにインストールします。そのアプリケーションやテストパッケージがすでにインストールされていた場合、それと置き換えます。

引数
path インストールする .apk ファイルの完全修飾パスとファイル名。

dictionary instrument ( string className, dictionary args)

Android インストゥルメンテーションで指定されているコンポーネントを実行します。そして、実行されたコンポーネントが出力した形式とまったく同じ形式で、ディクショナリ型の結果を返します。コンポーネントは、このデバイスにすでに存在している必要があります。

このメソッドを使用して、Android のテストケース クラスを使ったテストケースを開始します。 Android テスト フレームワークを使用したユニットテストの詳細については、テストの基礎をご覧ください。

引数
className このデバイスにすでにインストールされている Android コンポーネントの名前(標準形式のパッケージ名 / クラス名)。パッケージ名には、このデバイス上の .apk ファイルの Android パッケージ名、クラス名にはそのファイル内の Android コンポーネント(Activity、ContentProvider、Service、または BroadcastReceiver)のクラス名が入ります。パッケージ名とクラス名は両方とも完全修飾されている必要があります。詳しくは、ComponentName をご覧ください。
args フラグとその値を含んだ、ディクショナリ型。これらは起動時にコンポーネントに渡されます。フラグに値が設定されなかった場合、ディクショナリ型の値の部分には空の文字列が入ります。
戻り値
  • コンポーネントの出力結果を含んだディクショナリ型。ディクショナリ型の内容は、コンポーネント自身によって定義されます。

    componentName 引数でクラス名として InstrumentationTestRunner を使用した場合、結果のディクショナリ型には 1 つのキー「stream」が含まれます。「stream」の値は、テストの結果を含んだ文字列になります。このテスト結果は、コマンドラインから InstrumentationTestRunner を実行したときと同じものになります。この出力形式については、別の IDE でテストするで説明されています。

void press (string name, integer type)

type で指定されたキーイベントを、keycode によって指定されたキーに送信します。

引数
name 送信するキーコードの名前。キーコード名の一覧については KeyEvent をご覧ください。整数値ではなく、キーコード名を使用します。
type 送信するキーイベントのタイプ。指定できる値は、「 DOWN」、「UP」、「DOWN_AND_UP」です。

void reboot (string bootloadType)

このデバイスを bootloadType で指定したブートローダーに再起動します。

引数
into 再起動するブートローダーのタイプ。指定できる値は、「bootloader」、「recovery」、「None」です。

void removePackage (string package)

指定したパッケージ(そのデータとキャッシュも含めて)をこのデバイスから削除します。

引数
package このデバイスにインストールされている .apk ファイルの Android パッケージ名。

object shell (string cmd)

adb シェルコマンドを実行し、結果があればそれを返します。

引数
cmd adb シェルで実行するコマンド。これらのコマンドの形式については、Android Debug Bridge のトピックを参照してください。
戻り値
  • コマンドの結果(ある場合)。結果の形式はコマンドによって決定されます。

void startActivity ( string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)

渡された引数から作成したインテントを送信することで、このデバイス上でアクティビティを起動します。

引数
uri このインテントの URI (Intent.setData() を参照)。
action このインテントのアクション(Intent.setAction() を参照)。
data このインテントのデータ URI(Intent.setData() を参照)。
mimetype このインテントの MIME タイプ(Intent.setType() を参照)。
categories このインテントのカテゴリを定義する文字列を含んだ、イテラブル データ構造(Intent.addCategory() を参照)。
extras このインテントの追加データのディクショナリ型(例は Intent.putExtra() を参照)。

各ディクショナリ項目のキーは string 型でなければなりません。項目の値は、単純なデータ型もしくは構造化されたデータ型にすることができます。

component このインテントのコンポーネント(ComponentName を参照)。この引数を使うことで、このインテントを特定の Android パッケージ内の特定のクラスに誘導できます。
flags このインテントの処理方法を制御するフラグを含む、イテラブル データ構造(Intent.setFlags() を参照)。

MonkeyImage takeSnapshot ()

このデバイスの全画面バッファをキャプチャし、現在表示されている画面のキャプチャを生成します。

戻り値
  • 現在表示されている画面の画像を含む MonkeyImage オブジェクト。

void touch ( integer x, integer y, string type)

type で指定されたタッチイベントを、x と y で指定された画面位置に送信します。

引数
x タッチの水平方向の位置を、実際のデバイス上でのピクセルで指定したもの。現在の向きの画面の左側が座標の開始点になります。
y タッチの垂直方向の位置を、実際のデバイス上でのピクセルで指定したもの。現在の向きの画面の上側が座標の開始点になります。
type 送信するキーイベントのタイプ。指定できる値は、「 DOWN」、「UP」、「DOWN_AND_UP」です。

void type (string message)

デバイス上のキーボードから入力されたかのように、message 内に含まれている文字をこのデバイスに送信します。これは、キーイベント タイプ DOWN_AND_UP を使って、message 内の各キーコードの press() を呼び出すのと同じです。

引数
message 送信する文字を含んだ文字列。

void wake ()

このデバイスの画面を復帰させます。


付録

表 1. getProperty()getSystemProperty() で使用されるプロパティ変数名

プロパティ グループ プロパティ 説明 メモ
build board このデバイスのシステムボードのコード名 Build を参照
brand カスタマイズされているこの OS のキャリアまたはプロバイダ。
device このデバイスのデザイン名。
fingerprint 現在実行しているビルドの一意の識別子。
host
ID チェンジリストの番号またはラベル。
model エンドユーザーに表示されるこのデバイスの名前。
product 製品の全体の名前。
tags 「unsigned」や「debug」のようなビルドを記述するタグの一覧(カンマ区切り)。
type 「user」や「eng」などのビルドタイプ。
user
CPU_ABI ネイティブ コード命令セットの名前(CPU タイプと ABI 規則を合わせた形式)。
manufacturer この製品またはハードウェアのメーカー。
version.incremental このバージョンのソフトウェアを表すためにソース管理システムで使用される内部コード。
version.release ユーザーに表示される、このバージョンのソフトウェアの名前。
version.sdk ユーザーに表示される、このバージョンの OS に関連付けられている SDK バージョン。
version.codename 現在の開発コード名。もしくは、このバージョンのソフトウェアがリリースされている場合は「REL」。
display width このデバイスのピクセル単位の表示横幅。 詳しくは、DisplayMetrics をご覧ください。
height このデバイスのピクセル単位の表示縦幅。
density このディスプレイの論理密度。これは、DIP(Density-Independent Pixel)単位をこのデバイスの解像度に合わせるために使用される係数です。DIP は、1 DIP が 160 ppi ディスプレイの 1 ピクセルと等しくなるように調整されます。たとえば、160-dpi の画面では density = 1.0 になり、120-dpi の画面では density = .75 になります。

この値は実際の画面サイズを正確に反映しているわけではありませんが、ディスプレイ DPI の大きな変化に合わせて調節されます。詳細については density を参照してください。

am.current package 現在実行されているパッケージの Android パッケージ名。 am.current キーは、現在実行されているアクティビティに関する情報を戻り値として返します。
action 現在のアクティビティのアクション。これは、パッケージのマニフェストに記述されている action 要素の name 属性と同じ形式です。
comp.class 現在のアクティビティを起動したコンポーネントのクラス名。詳しくは、comp.package をご覧ください。
comp.package 現在のアクティビティを起動したコンポーネントのパッケージ名。コンポーネントは、パッケージ名とそのパッケージに含まれるクラス名によって指定されます。
data 現在のアクティビティを起動したインテント内に含まれているデータ(データが存在する場合)。
categories 現在のアクティビティを起動したインテントによって指定されたカテゴリ。
clock realtime ディープ スリープ時間を含む、このデバイスを再起動してからのミリ秒単位の経過時間。 詳しくは、SystemClock をご覧ください。
uptime ディープ スリープ時間を含まない、このデバイスを再起動してからのミリ秒単位の経過時間。
millis Unix エポックからのミリ秒単位の経過時間。