1. 發送鍵盤事件:
命令格式1:adb shell input keyevent “value”
其中value以及對應的key code如下表所列:
KeyEvent Value KEYCODE Comment
0 KEYCODE_UNKNOWN
1 KEYCODE_MENU 在SDK2.1的模擬器中命令失效,sendevent命令可行
2 KEYCODE_SOFT_RIGHT
3 KEYCODE_HOME
4 KEYCODE_BACK
5 KEYCODE_CALL
6 KEYCODE_ENDCALL
7 KEYCODE_0
8 KEYCODE_1
9 KEYCODE_2
10 KEYCODE_3
11 KEYCODE_4
12 KEYCODE_5
13 KEYCODE_6
14 KEYCODE_7
15 KEYCODE_8
16 KEYCODE_9
17 KEYCODE_STAR
18 KEYCODE_POUND
19 KEYCODE_DPAD_UP
20 KEYCODE_DPAD_DOWN
21 KEYCODE_DPAD_LEFT
22 KEYCODE_DPAD_RIGHT
23 KEYCODE_DPAD_CENTER
24 KEYCODE_VOLUME_UP
25 KEYCODE_VOLUME_DOWN
26 KEYCODE_POWER
27 KEYCODE_CAMERA
28 KEYCODE_CLEAR
29 KEYCODE_A
30 KEYCODE_B
31 KEYCODE_C
32 KEYCODE_D
33 KEYCODE_E
34 KEYCODE_F
35 KEYCODE_G
36 KEYCODE_H
37 KEYCODE_I
38 KEYCODE_J
39 KEYCODE_K
40 KEYCODE_L
41 KEYCODE_M
42 KEYCODE_N
43 KEYCODE_O
44 KEYCODE_P
45 KEYCODE_Q
46 KEYCODE_R
47 KEYCODE_S
48 KEYCODE_T
49 KEYCODE_U
50 KEYCODE_V
51 KEYCODE_W
52 KEYCODE_X
53 KEYCODE_Y
54 KEYCODE_Z
55 KEYCODE_COMMA
56 KEYCODE_PERIOD
57 KEYCODE_ALT_LEFT
58 KEYCODE_ALT_RIGHT
59 KEYCODE_SHIFT_LEFT
60 KEYCODE_SHIFT_RIGHT
61 KEYCODE_TAB
62 KEYCODE_SPACE
63 KEYCODE_SYM
64 KEYCODE_EXPLORER
65 KEYCODE_ENVELOPE
66 KEYCODE_ENTER
67 KEYCODE_DEL
68 KEYCODE_GRAVE
69 KEYCODE_MINUS
70 KEYCODE_EQUALS
71 KEYCODE_LEFT_BRACKET
72 KEYCODE_RIGHT_BRACKET
73 KEYCODE_BACKSLASH
74 KEYCODE_SEMICOLON
75 KEYCODE_APOSTROPHE
76 KEYCODE_SLASH
77 KEYCODE_AT
78 KEYCODE_NUM
79 KEYCODE_HEADSETHOOK
80 KEYCODE_FOCUS
81 KEYCODE_PLUS
82 KEYCODE_MENU
83 KEYCODE_NOTIFICATION
84 KEYCODE_SEARCH
85 TAG_LAST_KEYCODE
命令格式2:adb shell sendevent [device] [type] [code] [value]
如: adb shell sendevent /dev/input/event0 1 229 1 代表按下按下menu鍵
adb shell sendevent /dev/input/event0 1 229 0 代表按下鬆開menu鍵
說明:上述的命令需組合使用
完整命令:
adb shell sendevent /dev/input/event4 1 139 1;adb shell sendevent /dev/input/event4 1 330 1;adb shell sendevent /dev/input/event4 0 0 0;adb shell sendevent /dev/input/event4 1 139 0;adb shell sendevent /dev/input/event4 1 330 0;adb shell sendevent /dev/input/event4 0 0 0
其中數字是根據adb shell getevent 手動點擊menu鍵獲得到的
另外所知道的命令如下:
Key Name CODE
MENU 229
HOME 102
BACK (back button) 158
CALL (call button) 231
END (end call button) 107
2. 發送鼠標事件(Touch):
命令格式:adb shell sendevent [device] [type] [code] [value]
sendevent /dev/input/eventX type code value
/dev/input/eventX 對應一個event設備,可以通過getevent獲得可用的event設備
type, code, value的定義可參看kernel/include/linux/input.h
情況1:在某座標點上touch
如在屏幕的x座標爲40,y座標爲210的點上touch一下,命令如下
adb shell sendevent /dev/input/event0 3 0 40
adb shell sendevent /dev/input/event0 3 1 210
adb shell sendevent /dev/input/event0 1 330 1 //touch
adb shell sendevent /dev/input/event0 0 0 0 //it must have
adb shell sendevent /dev/input/event0 1 330 0 //untouch
adb shell sendevent /dev/input/event0 0 0 0 //it must have
注:以上六組命令必須配合使用,缺一不可
情況2:模擬滑動軌跡(可下載並採用aPaint軟件進行試驗)
如下例是在aPaint軟件上畫出一條開始於(100,200),止於(108,200)的水平直線
adb shell sendevent /dev/input/event0 3 0 100 //start from point (100,200)
adb shell sendevent /dev/input/event0 3 1 200
adb shell sendevent /dev/input/event0 1 330 1 //touch
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 3 0 101 //step to point (101,200)
adb shell sendevent /dev/input/event0 0 0 0
…………………… //must list each step, here just skip
adb shell sendevent /dev/input/event0 3 0 108 //end point(108,200)
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 330 0 //untouch
adb shell sendevent /dev/input/event0 0 0 0
實例如下:
sendevent /dev/input/event4 3 0 258;sendevent /dev/input/event4 3 1 285;sendevent /dev/input/event4 1 330 1;sendevent /dev/input/event4 0 0 0; sendevent /dev/input/event4 1 330 0;sendevent /dev/input/event4 0 0 0
展訊平臺點擊座標點(380,870)事件:
adb shell "sendevent dev/input/event4 1 330 1;sendevent dev/input/event4 3 48 20;sendevent dev/input/event4 3 53 380;sendevent dev/input/event4 3 54 870;sendevent dev/input/event4 0 2 0;sendevent dev/input/event4 0 0 0;sendevent dev/input/event4 3 48 20;sendevent dev/input/event4 3 53 380;sendevent dev/input/event4 3 54 870;sendevent dev/input/event4 0 2 0;sendevent dev/input/event4 0 0 0;sendevent dev/input/event4 1 330 0;sendevent dev/input/event4 0 2 0;sendevent dev/input/event4 0 0 0"
adb shell "sendevent dev/input/event4 1 330 1;sendevent dev/input/event4 3 48 20;sendevent dev/input/event4 3 53 380;sendevent dev/input/event4 3 54 870;sendevent dev/input/event4 0 2 0;sendevent dev/input/event4 0 0 0;sendevent dev/input/event4 1 330 0;sendevent dev/input/event4 0 0 0"
3.input text
主要是用於向獲得焦點的EditText控件輸入內容
adb shell input text "hello,world"
4.input [touchscreen|touchpad|touchnavigation] tap
該命令是用於向設備[屏幕、觸摸板、導航鍵]發送一個點擊操作的指令。參數是X Y。一般設備都是屏幕
adb shell input tap 100 100
5、input [touchscreen|touchpad|touchnavigation] swipe [duration(ms)]
向設備發送一個滑動的指令,並且可以選擇設置滑動的時長。
這個指令乍一看不就是個滑動嘛……233333……其實還有一個特殊的操作,長按。
這個指令在4.4+的機器上,可以實現長按的哦!
//滑動
adb shell input swipe 100 100 200 200 300 //從 100 100 經歷300毫秒滑動到 200 200
//長按
adb shell input swipe 100 100 100 100 1000 //在 100 100 位置長按 1000毫秒
6、input trackball press
這個命令是模擬軌跡球發送點擊命令
7、input trackball roll
這個命令是模擬軌跡球發送滾動命令