zoukankan      html  css  js  c++  java
  • 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如何模拟? 
    这是个难题

  • 相关阅读:
    java基础知识
    21-树形结构菜单之封装递归组件
    05-写vue中的一些小细节
    20-Mock拦截ajax请求,模拟数据
    19-count-to数字滚动组件封装
    18-简单封装axios
    04-Vscode-setting设置
    17-vue给有需要的路由设置title
    03-vuecli中的.editorconfig文件
    06-npm下载依赖存放位置修改
  • 原文地址:https://www.cnblogs.com/winfu/p/5549811.html
Copyright © 2011-2022 走看看