您的位置:首页 > 运维架构 > Shell

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开发 shell input