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

前言

通过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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • Android shell命令行中过滤adb logcat输出的方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法.        1.只显示需要的输出(白名单) 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp: adb logcat | grep MyApp        adb logcat |

  • Android中使用SQLite3 命令行查看内嵌数据库的方法

    在上图中,除了最后一个红色的方框,其它方框都是adb shell下的命令. [1]在Android程序中,一般创建的数据库存放在 /data/data/[应用程序包名]/databases 的目录下. [2]cd 命令:文件夹跳转命令.ls 命令:查看某个文件夹下面有哪些文件. [3]使用 "sqlite3 [数据库名称] " 命令来对某数据库进行一系列的操作. [4]在经过第[3]步骤后,可以使用 .tables 命令查看某数据库中包含哪些表.若要查询某表中包含的数据,在 sqlit

  • 在Linux下通过命令行打包Android应用的方法

    本文介绍了在Linux下通过命令行打包Android应用的方法,分享给大家,具体如下: Requirements Ubuntu 16.04 sdk tools for linux Java 8 准备环境 安装Shell工具 sudo apt install -y wget unzip git 安装JDK sudo apt install -y openjdk-8-jdk # 查看结果 java -version 初始化目录与环境变量 BUILD_BASE=`echo ~` export ANDR

  • Android shell命令行中过滤adb logcat输出的几种方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法.        1.只显示需要的输出(白名单) 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp: adb logcat | grep MyApp adb logcat | grep -i

  • Android中实现用命令行同步网络时间

    一.简介 Android基于Linux平台的开源手机操作系统. 二.原理 既然是Linux,那就应该支持linux的各种命令行,高度的可配置,但实验发现Android是Google的一个高度阉割版的linux,很多命令都不支持,如rdate命令(网络同步时间命令).既然不支持,那我使他支持不就完了. 三.BusyBox BusyBox 是标准 Linux 工具的一个单个可执行实现.BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大.更复杂的工具,例如 grep.f

  • Linux命令行下编译Android NDK的示例代码

    这几天琢磨写一个Android的Runtime用来加速HTML5 Canvas,让GameBuilder+CanTK 不但开发速度快,运行速度也能接近原生应用.所以花了点时间研究Android NDK,网上的资料都是讲IDE里的编译方法,这里记录一下命令行下的编译方法,供有需要的朋友参考. 这里以编译hello-gl2为例: 0.安装Android NDK/SDK,设置PATH变量(根据具体情况调整) PATH=$PATH:/work/android/android-sdk-linux/plat

  • Android中使用am命令实现在命令行启动程序详解

    在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am. 复制代码 代码如下: usage: am [subcommand] [options] start an Activity: am start [-D]         -D: enable debugging send a broadcast Intent: am broadcast start an Instrumentation: am instrument [flags]         -r

  • Android开发之sqlite3命令行简单使用方法

    本文实例讲述了Android开发之sqlite3命令行简单使用方法.分享给大家供大家参考,具体如下: 首先需要定位到database所在的目录里面,然后使用命令 sqlite3 databasename(数据库的名字)进入 常用命令: 1. .table     列取该数据库下面的数据表名 2. .schema 或者 .schema + 表名       获取整个或者是单个表的表结构 3. .database 显示该数据库所在的位置 4. .dump 显示数据库的所有信息(包括表结构,表数据)

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

    前言 通过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

  • Android如何通过命令行操作Sqlite3数据库的方法

    1.首先,找到 Android SDK 在本机中的位置,如果不知道,可以通过在 Android Studio 找到,如下: 2.其次,通过 cmd 打开 windows 命令行窗口,如果,SDK 所在目录就在C盘下,可以直接通过 cd 命令挂载至 SDK 下的 platform-tools 目录,如下: cd C:\Users\wyj\AppData\Local\Android\Sdk\platform-tools 如果在其他盘(如 D 盘),需要先转到该盘: 然后再使用 cd 命令转到对应的位

  • Android SDK命令行工具Monkey参数及使用解析

    什么是Monkey? Monkey是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试.主要是为了测试app是否存在无响应和崩溃的情况. Monkey的使用: 1.进入adb shell 环境 在windows环境中,进入DOS界面,在界面中,输入adb shell即可进入adb shell环境 (注意:adb shell服务使用的5037的端口,如果此端口被其他进程占用时,将不能正常启动adb shell,需关闭占用该

  • Android点击事件之多点触摸与手势识别的实现

    前言 最近遇到想要实现三指滑动监听的需求,实现代码不方便贴出来,但是思路还是可以记录一下. Muilti-touch 双指缩放探索 首先要实现OnTouchListener接口,然后重写方法: public boolean onTouch(View v, MotionEvent event); 从这个方法中我们就可以获取实现两指缩放功能的全部信息. View v是触发事件的源,MotionEvent event即一个触摸事件.对屏幕的几乎所有操作都会触发事件,如点击.放开.滑动等. 不同的事件在

  • python在windows命令行下输出彩色文字的方法

    本文实例讲述了python在windows命令行下输出彩色文字的方法.分享给大家供大家参考.具体分析如下: 默认情况下python在控制台输出的文字信息都是黑白的,如果能将文字做成彩色的输出,输出效果会更完美,也很酷,不是吗,下面是一段演示代码,这段代码封装了一个color类用来输出带颜色的文字,只要调用该类里面的相关方法就可以了,非常简单. 复制代码 代码如下: #!/usr/bin/env python #encoding: utf-8 import ctypes STD_INPUT_HAN

随机推荐