android 使用命令模拟点击 滑动

adb shell getevent -p 


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


带上 -l  

adb shell getevent -p  -l


EV_ABS      ABS_MT_TRACKING_ID   00000b21
EV_ABS      ABS_MT_PRESSURE      0000007f
EV_ABS      ABS_MT_TOUCH_MAJOR   00000006
EV_ABS      ABS_MT_POSITION_X    0000038f   // x坐标
EV_ABS      ABS_MT_POSITION_Y    00000421   // y坐标
EV_KEY      BTN_TOUCH            DOWN       // MotionEvent.ACTION_DOWN事件触发
EV_SYN      SYN_REPORT           00000000   //同步事件
EV_ABS      ABS_MT_PRESSURE      0000007e
EV_SYN      SYN_REPORT           00000000   //同步事件
EV_ABS      ABS_MT_TRACKING_ID   ffffffff
EV_KEY      BTN_TOUCH            UP         // MotionEvent.ACTION_UP事件触发
EV_SYN      SYN_REPORT           00000000   //同步事件

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


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


adb shell  input  -h  



  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输出到本地目录


猜你喜欢

转载自blog.csdn.net/lei7143/article/details/79088095