天天看點

android ADB 模拟手機點選事件

手機連接配接到ADB 輸入指令  

adb shell getevent -p

顯示

android ADB 模拟手機點選事件

從這裡可以知道每一個 /dev/input/event3: 0003 0035 00000161 event3是什麼事件 便于以後進行分析簡介代碼

接下來輸入

adb shell getevent

然後手機就可以接受手機螢幕上的點選事件的位置(不過是16進制)

/dev/input/event3: 0003 0030 00000025
/dev/input/event3: 0003 0032 00000005
/dev/input/event3: 0003 0035 00000160  點選事件位置
/dev/input/event3: 0003 0036 00000226  點選事件位置
/dev/input/event3: 0000 0002 00000000 
/dev/input/event3: 0000 0000 00000000 
/dev/input/event3: 0003 0030 00000025
/dev/input/event3: 0003 0032 00000005
/dev/input/event3: 0003 0035 00000160
/dev/input/event3: 0003 0036 00000226
/dev/input/event3: 0000 0002 00000000
/dev/input/event3: 0000 0000 00000000
/dev/input/event7: 0003 0028 00000012
/dev/input/event7: 0000 0000 00000000
/dev/input/event3: 0000 0002 00000000
/dev/input/event3: 0000 0000 00000000
/dev/input/event7: 0003 0028 00000016
/dev/input/event7: 0000 0000 00000000
/dev/input/event7: 0003 0028 00000018
/dev/input/event7: 0000 0000 00000000
/dev/input/event3: 0000 0002 00000000
/dev/input/event3: 0000 0000 00000000
           

接下來可以通過16進制轉換器将    /dev/input/event3: 0003 0035 00000161 的數字轉化為10進制  讓後再在前面加上sendevent  例如

sendevent /dev/input/event3 3 48 37   可以删除
sendevent /dev/input/event3 3 50 5		保留一個
sendevent /dev/input/event3 3 53 352  點選事件位置
sendevent /dev/input/event3 3 54 550  點選事件位置  
sendevent /dev/input/event3 0 2 0	事件分割
sendevent /dev/input/event3 0 0 0  事件分割
sendevent /dev/input/event3 3 48 37
sendevent /dev/input/event3 3 50 5
sendevent /dev/input/event3 3 53 352
sendevent /dev/input/event3 3 54 550
sendevent /dev/input/event3 0 2 0
sendevent /dev/input/event3 0 0 0
sendevent /dev/input/event7 3 40 18
sendevent /dev/input/event7 0 0 0
sendevent /dev/input/event3 0 2 0
sendevent /dev/input/event3 0 0 0
sendevent /dev/input/event7 3 40 22
sendevent /dev/input/event7 0 0 0
sendevent /dev/input/event7 3 40 24
sendevent /dev/input/event7 0 0 0
sendevent /dev/input/event3 0 2 0
sendevent /dev/input/event3 0 0 0
           

這些就是一個完整的點選事件的過程 這個 時候可以對比之前所檢視的 adb shell getevent -p 指令顯示的event事件    事件

  /dev/input/event3

  name:     "atmel-touchscreen"  

/dev/input/event1

  name:     "huawei_keypad"

 /dev/input/event7

  name:     "light sensor"

 /dev/input/event4

  name:     "l3g4200d_gyr"

可以知道event7是一個光線傳感器   和點選事件無關是以可以删除   接下來可以簡潔我們的點選事件 流程

簡潔版
sendevent /dev/input/event3 3 50 5
sendevent /dev/input/event3 3 53 352  
sendevent /dev/input/event3 3 54 550 
sendevent /dev/input/event3 0 2 0	 
sendevent /dev/input/event3 0 0 0 
sendevent /dev/input/event3 0 2 0	
sendevent /dev/input/event3 0 0 0
sendevent /dev/input/event3 0 2 0
           

接下來是一個長按事件

長點選事件
sendevent /dev/input/event3 3 50 5
sendevent /dev/input/event3 3 53 80
sendevent /dev/input/event3 3 54 429
sendevent /dev/input/event3 0 2 0	 
sendevent /dev/input/event3 0 0 0 
sendevent /dev/input/event3 0 2 0
           

試了很多次發現了以上的規律 雖然不知道為什麼

點選流程
sendevent /dev/input/event3 3 50 5
sendevent /dev/input/event3 3 53 352  
sendevent /dev/input/event3 3 54 550 
sendevent /dev/input/event3 0 2 0	 點選還未進入長點選狀态
sendevent /dev/input/event3 0 0 0 
sendevent /dev/input/event3 0 2 0	 點選後進入長點選狀态
sendevent /dev/input/event3 0 0 0
sendevent /dev/input/event3 0 2 0	點選使事件結束 長點選狀态消失
           

然後就可以得到我們需要點選的地方的一個事件

進入到  adb shell 

輸入我們整理過的簡潔版的代碼

就可以看到手機相應位置發生了點選事件