Android 模擬輸入那點事

因工做緣由,須要用到模擬輸入這個東東,查閱了一些資料,實現方式有多種,我大概分爲兩類,命令行類和程序類。android

命令行類包括自動化測試組件monkeyrunner,getevent/setevent命令,input命令shell

程序類包括MotionEvent,AccessibilityService,反射等測試

本人對這塊也是剛剛接觸,幾種方式不評優劣,僅就工做中用到的知識點作記錄,以備後用。spa

一、命令行開啓和關閉應用命令行

adb shell am start -n 包名/入口activity   //開啓某個應用
adb shell am force-stop 包名               //關閉某個應用

二、input命令參數code

Usage: input [<source>] <command> [<arg>...]

The sources are:
      trackball                    //滾動球
      joystick                     //操縱桿
      touchnavigation              //觸摸導航 
      mouse                        //鼠標
      keyboard                     //鍵盤
      gamepad                      //手柄
      touchpad                     //觸摸板
      dpad                         //模擬手柄
      stylus                       //尖筆
      touchscreen                  //觸摸屏

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)  //滑動操做
      press (Default: trackball)
      roll <dx> <dy> (Default: trackball)

其中咱們經常使用的就是keyboard和touchscreen,用起來也很簡單。blog

三、keyevent值對應表ip

0 -->  "KEYCODE_UNKNOWN"
1 -->  "KEYCODE_MENU"
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"

四、getevent/sendeventget

首先執行getevent -p命令獲取android設備上全部的input設備,找到screen設備input

執行getevent 設備編號,在屏幕上作操做,記錄getevent的結果。

type,code,value

0003 0036 000002a4

須要注意的是getevent獲取的值是16進制的,sendevent發送的是10進制,須要作一下轉換

相關文章
相關標籤/搜索