Android - adb shell input 명령어 사용 방법

JS · 08 Nov 2020

adb shell input 명령어는 TouchEvent 또는 KeyEvent를 발생시킵니다.

매크로를 만들거나 테스트 목적으로 자동화 스크립트를 만들 때 사용될 수 있습니다.

명령어 Usage

다음과 같은 형태로 명령어를 사용할 수 있습니다.

$ adb shell input [<source>] [-d DISPLAY_ID] <command> [<arg>...]

The sources are:
      dpad
      keyboard
      mouse
      touchpad
      gamepad
      touchnavigation
      joystick
      touchscreen
      stylus
      trackball

-d: specify the display ID.
      (Default: -1 for key event, 0 for motion event if not specified.)
The commands and default sources are:
      text <string> (Default: touchscreen)
      keyevent [--longpress] <key code number or name> ... (Default: keyboard)
      tap <x> <y> (Default: touchscreen)
      swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
      draganddrop <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
      press (Default: trackball)
      roll <dx> <dy> (Default: trackball)
      motionevent <DOWN|UP|MOVE> <x> <y> (Default: touchscreen)

KeyEvent 생성 예제

source를 키 이벤트가 생성되는 하드웨어 장치를 의미합니다.

displaId는 멀티 디스플레이 환경에서 사용됩니다. 다른 디스플레이에 존재하는 UI에 이벤트를 보낼 때 그 Display의 displayId를 설정하시면 됩니다. 화면이 Phone 뿐이라면 생략하시면 됩니다.

다음과 같이 입력하시면 Home key가 생성되어 시스템에 전달됩니다. command는 keyevent이며 arg는 3이 됩니다. 즉, KeyCode 3에 해당하는 KeyEvent를 전달하라는 의미입니다.

$ adb shell input keyboard keyevent 3

KeyCode는 Android Developer - KeyEvent에서 확인이 가능합니다.

사이트를 보시면 다음과 같이 KEYCODE_HOME은 HOME 버튼을 의미하며 3으로 설정되어있습니다.

public static final int KEYCODE_HOME
Constant Value: 3 (0x00000003)

public static final int KEYCODE_BACK
Constant Value: 4 (0x00000004)

KEYCODE_BACK을 전달하려면 다음과 같이 명령어에 4를 입력하면 됩니다. 이벤트는 시스템에 전달되어, 전면에 실행 중인 앱으로 다시 전달됩니다.

$ adb shell input keyboard keyevent 4

MotionEvent 생성 예제 (Tap: 짧게 터치)

아래 명령어는 x=200, y=2200에 tap을 하라는 명령어입니다. 실행해보면 해당 좌표를 짧게 터치하는 것을 볼 수 있습니다.

$ adb shell input touchscreen tap 200 2200

MotionEvent 생성 예제 (Swipe: 터치 Down -> 드래그 -> 터치 Up)

아래 명령어는 swipe입니다. x=200, y=2200를 터치 및 x=200, y=2400까지 드래그한 뒤에 release합니다.

$ adb shell input touchscreen swipe 200 2200 200 2500

MotionEvent 생성 예제 (motionevent 명령어)

motionevent 명령어는 좀 더 섬세하게 터치 이벤트를 컨트롤하는 명령어입니다. MotionEvent는 ACTION_DOWN, ACTION_MOVE, ACTION_UP으로 이루어져있는데요. 이 단위로 이벤트를 생성하는 명령어입니다.

아래와 같이 나눠서 이벤트를 만들 수 있습니다.

$ adb shell input touchscreen motionevent DOWN 200 2200
$ adb shell input touchscreen motionevent MOVE 200 2500
$ adb shell input touchscreen motionevent UP 200 2500

결과는 input touchscreen swipe 200 2200 200 2500와 거의 동일합니다. (이벤트 간의 시간 간격이 다를 수 있다는 것 빼고는 거의 동일)

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha