6월 3일의 ⁠#Android11: 베타 버전 출시 행사에 참여하세요.

MonkeyDevice

monkeyrunner를 실행하는 워크스테이션이 액세스할 수 있는 기기나 에뮬레이터를 나타내는 monkeyrunner 클래스입니다.

이 클래스는 Android 기기나 에뮬레이터를 제어하는 데 사용됩니다. 메서드는 UI 이벤트를 전송하고 정보를 검색하며 애플리케이션을 설치 및 삭제, 실행합니다.

일반적으로 MonkeyDevice 인스턴스를 생성할 필요는 없습니다. 대신 MonkeyRunner.waitForConnection()을 사용하여 기기나 에뮬레이터 연결에서 새로운 객체를 생성합니다. 예를 들어 다음을 사용하는 대신

    newdevice = MonkeyDevice()
    

다음을 사용합니다.

    newdevice = MonkeyRunner.waitForConnection()
    

요약

상수
string DOWN press() 또는 touch() type 인수와 함께 사용하여 DOWN 이벤트를 전송합니다.
string UP press() 또는 touch() type 인수와 함께 사용하여 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)
인텐트를 애플리케이션에서 가져오는 것처럼 기기에 브로드캐스트합니다.
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)
유형으로 지정된 키 이벤트를 키 코드로 지정된 키로 전송합니다.
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)
유형으로 지정된 터치 이벤트를 x 및 y로 지정된 화면 위치로 전송합니다.
void type (string 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 인텐트의 카테고리를 정의하는 문자열을 포함한 iterable 데이터 구조입니다(Intent.addCategory() 참조).
extras 인텐트의 추가 데이터 사전입니다(Intent.putExtra() 참조).

각 사전 항목의 키는 string이 되어야 합니다. 항목값은 간단하거나 구조화된 데이터 유형일 수 있습니다.

component 이 인텐트의 구성요소입니다(ComponentName 참조). 이 인수를 사용하면 특정 Android 패키지 내의 특정 클래스로 인텐트를 보냅니다.
flags 인텐트 처리 방법을 제어하는 플래그가 포함된 iterable 데이터 구조입니다(Intent.setFlags() 참조).

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

이 기기의 화면에서 드래그 동작(터치, 길게 누르기, 빠른 동작)을 시뮬레이션합니다.

인수
시작 x 및 y가 integertuple(x, y) 형식 드래그 동작의 시작 지점입니다.
종료 x 및 y가 integertuple(x, y) 형식 드래그 동작의 종료 지점입니다.
지속 시간 드래그 동작 지속 시간(초)입니다. 기본값은 1.0초입니다.
단계 지점을 보간할 때 이행할 단계 수입니다. 기본값은 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 구성요소의 이름(표준 형식 packagename/classname)으로 packagename은 이 기기에 있는 .apk 파일의 Android 패키지 이름이고 classname은 같은 파일에 있는 Android 구성요소(활동 또는 ContentProvider, 서비스, BroadcastReceiver)의 클래스 이름입니다. packagename과 classname은 모두 정규화되어야 합니다. 자세한 내용은 ComponentName을 참조하세요.
args 플래그와 그 값을 포함하는 사전입니다. 이것은 시작될 때 구성요소로 전달됩니다. 플래그가 값을 가지지 않으면 사전값을 빈 문자열로 설정하세요.
반환
  • 구성요소의 출력을 포함하는 사전입니다. 사전의 콘텐츠는 구성요소 자체로 정의됩니다.

    componentName 인수에서 클래스 이름으로 InstrumentationTestRunner를 사용하면 결과 사전에 단일 키 '스트림'이 포함됩니다. '스트림' 값은 InstrumentationTestRunner가 명령줄에서 실행된 것처럼 테스트 출력을 포함하는 string입니다. 이 출력의 형식은 다른 IDE에서 테스트에 설명되어 있습니다.

void press (string 이름, integer 유형)

type으로 지정된 키 이벤트를 keycode로 지정된 키로 전송합니다.

인수
이름 전송할 키 코드 이름입니다. 키 코드 이름 목록은 KeyEvent를 참조하세요. 키 코드의 정숫값이 아닌 키 코드 이름을 사용하세요.
유형 전송할 키 이벤트의 유형입니다. 허용되는 값은 DOWN, UPDOWN_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 디버그 브리지 주제에 설명되어 있습니다.
반환
  • 명령어의 결과입니다(있는 경우). 결과 형식은 명령어에 따라 결정됩니다.

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 이 인텐트의 카테고리를 정의하는 문자열을 포함한 iterable 데이터 구조입니다(Intent.addCategory() 참조).
extras 이 인텐트의 추가 데이터 사전입니다(Intent.putExtra() 참조).

각 사전 항목의 키는 string이 되어야 합니다. 항목값은 간단하거나 구조화된 데이터 유형일 수 있습니다.

component 이 인텐트의 구성요소입니다(ComponentName 참조). 이 인수를 사용하면 특정 Android 패키지 내의 특정 클래스로 인텐트를 보냅니다.
flags 인텐트 처리 방법을 제어하는 플래그가 포함된 iterable 데이터 구조입니다(Intent.setFlags() 참조).

MonkeyImage takeSnapshot ()

기기의 전체화면 버퍼를 캡처하여 현재 디스플레이의 화면 캡처를 생성합니다.

반환
  • 현재 디스플레이 이미지를 포함하는 MonkeyImage 객체입니다.

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

유형으로 지정된 터치 이벤트를 x 및 y로 지정된 화면 위치로 전송합니다.

인수
x 실제 기기 픽셀에서 터치의 수평 위치로 현재 방향에서 화면 왼쪽부터 시작합니다.
y 실제 기기 픽셀에서 터치의 수직 위치로 현재 방향에서 화면 위부터 시작합니다.
유형 전송할 키 이벤트의 유형입니다. 허용되는 값은 DOWN, UPDOWN_AND_UP입니다.

void type (string message)

메시지에 포함된 문자를 기기의 키보드에서 입력한 것처럼 기기로 전송합니다. 이는 키 이벤트 유형 DOWN_AND_UP을 사용하여 message에서 각 키 코드의 press()를 호출하는 것과 같습니다.

인수
메시지 전송할 문자가 포함된 문자열입니다.

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(밀도 독립형 픽셀) 단위로 기기의 해상도를 조정하는 요소입니다. 1 DIP가 인치당 160픽셀 디스플레이의 1픽셀과 같도록 DIP를 조정합니다. 예를 들어 160dpi 화면에서는 밀도 = 1.0이고 120dpi 화면에서는 밀도 = 0.75입니다.

이 값이 실제 화면 크기를 정확히 따르지는 않지만 디스플레이 DPI의 큰 변화에 맞게 조정됩니다. 자세한 내용은 density를 참조하세요.

am.current package 현재 실행 중인 패키지의 Android 패키지 이름입니다. am.current 키가 현재 실행 중인 활동에 관한 정보를 반환합니다.
action 현재 활동의 작업입니다. 패키지 manifest에 속한 action 요소의 name 속성과 형식이 같습니다.
comp.class 현재 활동을 시작한 구성요소의 클래스 이름입니다. 자세한 내용은 comp.package을 참조하세요.
comp.package 현재 활동을 시작한 구성요소의 패키지 이름입니다. 구성요소는 패키지 이름과 패키지에 포함된 클래스 이름으로 지정됩니다.
data 현재 활동을 시작한 인텐트에 포함된 데이터입니다(있는 경우).
categories 현재 활동을 시작한 인텐트로 지정된 카테고리입니다.
clock realtime 기기가 재부팅된 이후의 밀리초 단위 시간으로, 최대 절전 모드 시간을 포함합니다. 자세한 내용은 SystemClock를 참조하세요.
uptime 기기가 재부팅된 이후의 밀리초 단위 시간으로, 최대 절전 모드 시간을 포함하지 않습니다.
millis UNIX 에포크 이후의 현재 밀리초 단위 시간입니다.