adb shell getevent -p

%title插图%num

出现上述截图的就是屏幕触摸输入设备

带上 -l

adb shell getevent -p -l

%title插图%num

%title插图%num

获得event 体系里 宽(0035)和高(0036)

通过adb模拟滑动、按键、点击事件

adb shell input -h

%title插图%num

adb shell input text string 在搜索框中自动输入 string

keyevent 手机的按键操作,如:home键、返回键、菜单键、锁屏等

例如需要点击一下home键

adb shell input keyevent 3 或者 adb shell input keyevent KEYCODE_HOME

tap 是模拟touch屏幕的事件,以下命令就是点击屏幕300,300位置

adb shell input tap 300 300

swipe 是滑动事件,以下命令表示从屏幕300,300 移动到400,400

adb shell input swipe 300 300 400 400

KEYCODE_HOME 所在文件

frameworks/base/core/java/android/view/KeyEvent.java

sendevent 命令

sendevent /dev/input/eventX type code value

type、code、value 定义在kernel-3.18/include/uapi/linux/input.h

/*

* Event types
*/

#define EV_SYN 0x00
#define EV_KEY 0x01 –按键
#define EV_REL 0x02 –触摸相对坐标
#define EV_ABS 0x03 –触摸*对坐标
#define EV_MSC 0x04
#define EV_SW 0x05
#define EV_LED 0x11
#define EV_SND 0x12
#define EV_REP 0x14
#define EV_FF 0x15
#define EV_PWR 0x16
#define EV_FF_STATUS 0x17
#define EV_MAX 0x1f
#define EV_CNT (EV_MAX+1)

一般常用的是EV_KEY, EV_REL, EV_ABS, EV_SYN

分别对应keyboard, 相对坐标, *对坐标, 同步事件

EV_SYN对应的code如下

/*
* Synchronization events.
*/

#define SYN_REPORT 0
#define SYN_CONFIG 1
#define SYN_MT_REPORT 2
#define SYN_DROPPED 3
#define SYN_MAX 0xf
#define SYN_CNT (SYN_MAX+1)

input keyevent

模拟按键,sendevent用起来比较繁琐,可以用input keyevent代替

input keyevent 3 // Home (KeyEvent.java)

input keyevent 4 // Back

input keyevent 19 //Up

用senevent 模拟触屏事件

sendevent /dev/input/event1 0003 0000 0000015e // ABS x 坐标

sendevent /dev/input/event1: 0003 0001 000000df // ABS y 坐标

sendevent /dev/input/event1: 0001 014a 00000001 // BTN touch事件 值为1

adb shell input keyevent 82 这个命令会发送一个解屏事件到锁屏的设备上解屏

http://blog.shvetsov.com/2013/02/grab-android-screenshot-to-computer-via.html

adb shell screencap -p | perl -pe ‘s/\x0D\x0A/\x0A/g’ > screen.png 截屏并通过perl输出到本地目录

————————————————