Android getevent


详细用法如下: 

  1. Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]  
  2. switchfor given bits  
  3. switch , dev=, name=, info=, vers=, pos. events=, props=)  
  4. if Usage: sendevent <device> <type> <code> <value>  


首先,adb shell进入android设备,运行getevent命令得到如下信息,为各类事件的驱动设备,每部 

  1. add device : /dev/input/event1  
  2.   
  3. : /dev/input/event3  
  4.   
  5. : /dev/input/event2  
  6.   
  7. : /dev/input/event5  
  8.   
  9. for /dev/input/mice, Not a typewriter  
  10. : /dev/input/event0  
  11.   
  12. : /dev/input/event4  
  13.   


在点击设备屏幕之后得到: 

  1. /dev/input/event0:   000002a5  
  2.     
  3.   0000017b  
  4.   000001cf  
  5.  003a 0000001c  
  6.     
  7.   ffffffff  
  8.     
  1. /dev/input/event0: EV_ABS       ABS_MT_TRACKING_ID     000002a6  
  2.   
  3.   
  4.   


type: 输入设备类型,在手机系统中经常使用的键盘(keyboard)和小键盘(kaypad)属于按键设 
备EV_KEY,轨迹球属于相对设备EV_REL,触摸屏属于绝对设备EV_ABS 
code: 按键扫描码,区别于ASCII码和SDK中KeyEvent的键码 
value: 附加码,1/0 down/up 

一次touch此8行是必须的,如果是longTouch呢,在touch的基础上,重复若干次第2~6行,即看起 
来可能是这样子: 

  1. /dev/input/event0: EV_ABS       ABS_MT_TRACKING_ID     000002a6  
  2.   
  3.   
  4.   
  5.   
  6.   
  7.   
  8.   


如果是drag呢,在longTouch的基础上,xy坐标从起点到终点是渐变的,其他可认为一样。 

  1. /dev/input/event0:     
  2.     
  3.     
  4.     
  5.   
  6.   


所以清楚了之后,使用sendevent进行事件模拟就很轻松了,关键是从input.h中获取按键对应的扫 

值得注意的是使用getevent获取的数值都是16进制的,而sendevent使用的是10进制的,需要进行 

如点击坐标: 120,254 

  1. sendevent /dev/input/event1         <---事件开始   
  2.         <---点击开始  
  3.         <---  触摸范围  
  4.         <---  x坐标  
  5.         <---  y坐标  
  6.         <---点击结束(同步)  
  7.           <---事件结束  
  8.         <---事件同步  


对于longTouch,重复几次上面提到的步骤,而drag再弄个坐标渐变。 

  1. sendevent /dev/input/event0     
  2.     
  3.     
  4.     
  5.   
  6.   




模拟事件的话,可以转向input命令。 

供的功能还不一样,但它毕竟好用啊,如下: 

  1. usage: input ...  
  2.        input swipe <x1> <y1> <x2> <y2>  


输入文本: input text abcdefg 
按键 : input keyevent KEYCODE_MENU 
点击 : input tap 100 300 
拖拽 : input swipe 100 600 500 600 

②对于longTouch,使用input如何模拟? 
这是个难题

posted @ 2016-06-01 15:35  winfu  阅读(8959)  评论(0编辑  收藏  举报