shell@N7000R:/ $ input Usage: input [<source>] <command> [<arg>...] The sources are: keyboard mouse joystick touchnavigation touchpad trackball dpad stylus gamepad 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)
1、input text
该命令主要是用于向获得焦点的EditText控件输入内容!
adb shell input text "hello,world"
该方法只能对EditText输入AscII码的字符,对于UTF-8的字符是无法输入的!(汉字是不要想用这个命令输入的)
关于某些程序希望实现到类似于按键精灵功能自动向文本框输入汉字的功能,可以使用一个比较取巧的办法。
可以到github上参考https://github.com/senzhk/ADBKeyBoard
2、input keyevent
该命令主要是向系统发送一个按键指令,实现模拟用户在键盘上的按键动作。
adb shell input keyevent 4 adb shell input keyevent "KEYCODE_BACK"
下面附一个从网上扒到的 按键code 与 按键名的对应关系表
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”
3、input [touchscreen|touchpad|touchnavigation] tap
该命令是用于向设备[屏幕、触摸板、导航键]发送一个点击操作的指令。参数是X Y。
adb shell input tap 100 100
4、input [touchscreen|touchpad|touchnavigation] swipe [duration(ms)]
向设备发送一个滑动的指令,并且可以选择设置滑动的时长。
同时也可以实现长按(长按就是一种特殊的滑动,即位置不变的滑动)
//滑动 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毫秒
简单的脚本实现:
#!/bin/bash echo "----------test start!!!---------" for i in {1..1000}; do echo $i echo "time:`date +%Y-%m-%d-%H-%M-%S`" adb shell input tap 137 650 adb shell input swipe 240 837 240 837 8000 #press key KEYCODE_BACK #adb shell input tap 91 958 adb shell input keyevent 4 done echo "----------test end!!!---------"
此脚本解释:
点击点(137,650),此点的位置为camera应用的图标
长按点(240,837)8秒钟,此点的位置为camera应用的拍照按钮
按下返回键,回到桌面上
一直循环1000次
当然也可以在优化一下:
#!/bin/bash echo "----------test start!!!---------" for i in {1..1000}; do echo $i echo "time:`date +%Y-%m-%d-%H-%M-%S`" #------------------------------------ #adb shell input tap 137 650 adb shell am start -n "com.android.gallery3d/.activity.CameraActivity" #------------------------------------ sleep 2 #------------------------------------ adb shell input swipe 240 837 240 837 8000 #------------------------------------ #press key KEYCODE_BACK #adb shell input tap 91 958 adb shell input keyevent 4 #------------------------------------ done echo "----------test end!!!---------"