android命令行模拟输入事件(文字、按键、触摸等)

作者:大贝壳seashell 时间:2021-10-30 04:48:06 

前言

通过adb shell input可以模拟android各种输入事件,比如文字、按键、触摸等等。


adb shell 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)

基本用法

usage: input [text|keyevent]
  input text <string>
  input keyevent <event_code>

输入文字

列子:


adb shell input text sample-text

而包含字符可以使用引号包裹,其中%s代表空格。


adb shell input text "insert%syour%stext%shere"

模拟按键

通过adb shell input keyevent可以模拟按键,后面跟按键code。比如:


adb shell input keyevent 82

所有按键code列表如下:

0 -->  "KEYCODE_0"
1 -->  "KEYCODE_SOFT_LEFT"
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 -->  "KEYCODE_MEDIA_PLAY_PAUSE"
86 -->  "KEYCODE_MEDIA_STOP"
87 -->  "KEYCODE_MEDIA_NEXT"
88 -->  "KEYCODE_MEDIA_PREVIOUS"
89 -->  "KEYCODE_MEDIA_REWIND"
90 -->  "KEYCODE_MEDIA_FAST_FORWARD"
91 -->  "KEYCODE_MUTE"
92 -->  "KEYCODE_PAGE_UP"
93 -->  "KEYCODE_PAGE_DOWN"
94 -->  "KEYCODE_PICTSYMBOLS"
...
122 -->  "KEYCODE_MOVE_HOME"
123 -->  "KEYCODE_MOVE_END"

最新的可以参考官方文档:https://developer.android.com/reference/android/view/KeyEvent.html

模拟触摸

通过 tap可以模拟触摸事件,参数是<x, y>


adb shell input tap 500 1450

滑动则可以通过swipe模拟,参数是<x1 y1 x2 y2 time>


adb shell input swipe 100 500 100 1450 100

巧妙使用swipe也可以模拟长按事件:


adb shell input swipe 100 500 100 500 250

来源:https://www.jianshu.com/p/9bf655e661ca

标签:android,命令行,模拟
0
投稿

猜你喜欢

  • c# WPF中的TreeView使用详解

    2021-05-24 15:17:58
  • Java中synchronized的优化措施

    2022-10-09 18:19:05
  • 解析Android框架之Volley源码

    2021-09-30 19:44:28
  • C#使用Json.Net进行序列化和反序列化及定制化

    2023-07-10 19:11:35
  • kotlin中EditText赋值Type mismatch方式

    2023-06-19 03:52:56
  • Android画板开发之基本画笔功能

    2023-01-09 07:26:21
  • C#数据结构之队列(Quene)实例详解

    2021-12-03 09:06:26
  • C#中string.Empty和null的区别详解

    2023-05-19 16:01:45
  • java实现1M图片压缩优化到100kb实现示例

    2022-08-08 03:59:43
  • C# 关于爬取网站数据遇到csrf-token的分析与解决

    2023-07-25 06:25:39
  • java实现邮件发送

    2022-06-03 02:48:20
  • SpringBoot自动配置实现流程详细分析

    2023-06-23 13:35:45
  • 深入理解MyBatis中的一级缓存与二级缓存

    2022-05-25 09:41:34
  • Spring深入刨析声明式事务注解的源码

    2023-10-23 09:41:48
  • Android如何使用GestureDetector进行手势检测详解

    2022-03-21 22:08:46
  • C#串口通信模块使用方法示例

    2023-06-19 12:13:57
  • 浅谈Java数值类型的转换与强制转换

    2022-07-01 15:24:00
  • SpringBoot项目的配置文件中设置server.port不生效问题

    2022-11-13 06:01:26
  • IntelliJ IDEA中properties文件显示乱码问题的解决办法

    2021-09-08 04:59:03
  • c#和avascript加解密之间的互转代码分享

    2022-03-22 10:15:28
  • asp之家 软件编程 m.aspxhome.com