android开发笔记之adb shell input
2017-12-27 20:15
537 查看
缘由
最近给别的部门做项目,发现他们做了一个压力测试的脚本,是windows操作系统下的bat脚本,看了一下,发现就是用adb shell input命令来做的,好吧,那就玩一下吧。adb shell input
adb shell kx00:/ $ 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)
查看bat脚本
@echo off for /l %%i in (1,1,1500) do ( adb shell input swipe 240 837 240 837 8000 adb shell input tap 91 958 adb shell input tap 137 650 echo "i=%%i" ) pause
此脚本解释:
长按点(240,837)8秒钟,此点的位置为camera应用的拍照按钮
按下返回键,回到桌面上
点击点(137,650),此点的位置为camera应用的图标
一直循环1500次
可以看出此脚本有一些不完善的地方:
第一,点的位置为固定点,不能完全匹配不同的机型,也就是说每个不同屏幕的手机,都要修改点的位置。
第二,返回的方式是使用点的方式,没有使用按键的方式。
第三,这个脚本的执行顺序也是有问题,特别是第一次执行。
修改后的sh脚本
#!/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.myos.camera/.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!!!---------"
此脚本, 我们优化了启动camera的指令,比上面的更好一点。只是长按camera应用的拍照按钮还是使用的点的方式,每次还是要查看此点的位置。
eyevent事件
我常用到的有两个:向左滑动屏幕 adb shell input keyevent 21
向右滑动屏幕 adb shell input keyevent 22
其他keyevent事件和对应的num如下:
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”
相关文章推荐
- android开发笔记之ADB Shell Commands
- android开发笔记之adb shell dumpsys
- Android开发笔记之adb参数指南
- adb shell获取root权限 因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便
- Android开发之旅:adb shell 命令详解
- [Android][adb]input笔记--模拟-按键-点击-滑动事件
- Android开发集锦之一:adb shell error: device not found android错误
- Android开发笔记之adb参数指南
- 1.Android新版开发教程&笔记—Android ADB工具使用
- android 开发零起步学习笔记(二十六):安卓输入法相关知识点 android InputMethodManager
- 【原创】Android开发之ADB及ADB SHELl命令的应用
- Android开发笔记(一百三十八)文本输入布局TextInputLayout
- Android精简小笔记(3):在adb shell中操作sqlite数据库的方法
- android笔记之adb在无开发环境电脑上运行
- 【android开发工具】之adb shell dumpsys
- [Android]通过adb shell input上报命令模拟屏幕点击事件
- Android笔记:Android adb shell 命令
- android开发笔记之adb命令详解
- Android开发学习笔记(9):ADB命令大全
- Android开发笔记之adb参数指南