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)

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

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

object getSystemProperty (string key)

getProperty() と同義。

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

void installPackage (string path)

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

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

dictionary instrument ( string className, dictionary args)

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

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

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

    componentName 引数でクラス名として InstrumentationTestRunner を使用した場合、結果のディクショナリには単一のキー「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(密度非依存ピクセル)単位をこのデバイスの解像度に合わせるために使用される係数です。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 エポックからのミリ秒単位の経過時間。