android多指控制协议详细解答

Posted Android高级知识分享官

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android多指控制协议详细解答相关的知识,希望对你有一定的参考价值。

类型部分:

1.EV_SYN

同步事件完,在事件开始或完成会有
对应的code:
0004:代表一个事件开始(不必要)
0005:代表一个事件开始(不必要)
SYN_REPORT:代表一个事件的结束 (必要)

2.EV_ABS

事件的一种绝对坐标类型
对应code:
2.0 ABS_MT_SLOT
本质代表者不同手指,它的value代表手指id
2.1 ABS_MT_TRACKING_ID

类型B特有的,实际上,每个slot会和一个ID相对应,一个非负数的表示一次接触,-1表示这是一个无用的slot(或者理解为一次接触的结束) 。无论在接触的类型相对应的slot发生了改变,驱动都应该通过改变这个值来使这个slot失效。并且下一次触摸的ID值会是这次的值加1。

2.2 ABS_MT_POSITION_X,ABS_MT_POSITION_Y

相对于屏幕中心的x,y坐标。

2.3 ABS_MT_TOUCH_MAJOR

接触部分的长轴长度。相当于椭圆的长轴。

2.4 ABS_MT_TOUCH_MINOR

接触部分的短轴长度。相当于椭圆的短轴。

2.5 ABS_MT_PRESSURE
代表按下压力,有的设备不一定有

3.EV_KEY

事件的一种类型。表示是按键(不仅仅指的物理按键也包括TOUCH)事件
对应code:
3.1 BTN_TOUCH

触碰按键。其值是DOWN或者UP。

3.2 BTN_TOOL_FINGER

按键的是finger,并且其值也是DOWN或者UP

4.案例分析

两个手指分别按下,移动,然后分别抬起:

[    1026.632366] /dev/input/event1: EV_SYN       0004                 00000402       --同步头(其实理论上可以省略)       
[    1026.632366] /dev/input/event1: EV_SYN       0005                 2576d0ba            
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000000        代表第一个手指,其实第一个也可以没有,有的机器就第一次0是没有这个slot    
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_TRACKING_ID   00000016         第一个手指对应的TRACKING_ID   
[    1026.632366] /dev/input/event1: EV_KEY       BTN_TOUCH            DOWN            触摸按下    
[    1026.632366] /dev/input/event1: EV_KEY       BTN_TOOL_FINGER      DOWN                
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    0000011a        按下X轴坐标    
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000475        按下Y轴坐标    
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MAJOR   00000003        按下的椭圆长轴    
[    1026.632366] /dev/input/event1: EV_SYN       SYN_REPORT           00000000     --同步尾(不省略)              
[    1027.937528] /dev/input/event1: EV_SYN       0004                 00000403            
[    1027.937528] /dev/input/event1: EV_SYN       0005                 37b18cde            
[    1027.937528] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    0000011b        这里代表第一个手指移动后坐标     
[    1027.937528] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000476            
[    1027.937528] /dev/input/event1: EV_SYN       SYN_REPORT           00000000          

[    1028.917333] /dev/input/event1: EV_SYN       0004                 00000404            
[    1028.917333] /dev/input/event1: EV_SYN       0005                 367d836c            
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MINOR   00000003         这里是第一个手指的短轴,因为之前一直是slot为0   
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000001        代表第二手指出来了    
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_TRACKING_ID   00000017        第二个手指对应TRACKING_ID
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    00000324          第二手指坐标  
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000165            
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MAJOR   00000002            
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MINOR   00000002            第二个手指短轴
[    1028.917333] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             
[    1029.047446] /dev/input/event1: EV_SYN       0004                 00000405            
[    1029.047446] /dev/input/event1: EV_SYN       0005                 02afd368            
[    1029.047446] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000166            第二个手指坐标
[    1029.047446] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MAJOR   00000004            
[    1029.047446] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MINOR   00000003            
[    1029.047446] /dev/input/event1: EV_SYN       SYN_REPORT           00000000            

[    1029.903648] /dev/input/event1: EV_SYN       0004                 00000405            
[    1029.903648] /dev/input/event1: EV_SYN       0005                 35c02ec5            
[    1029.903648] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000000           
[    1029.903648] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    00000173             第一个手指X坐标
[    1029.903648] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000001            
[    1029.903648] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    00000321             第二个手指X坐标
[    1029.903648] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             

[    1031.902947] /dev/input/event1: EV_SYN       0004                 00000407            
[    1031.902947] /dev/input/event1: EV_SYN       0005                 35b8a020            
[    1031.902947] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000000            第一个手指有事件 
[    1031.902947] /dev/input/event1: EV_ABS       ABS_MT_TRACKING_ID   ffffffff            TRACKING_ID为-1代表第一个手指抬起消失
[    1031.902947] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             
[    1032.024946] /dev/input/event1: EV_SYN       0004                 00000408            
[    1032.024946] /dev/input/event1: EV_SYN       0005                 016372d8            
[    1032.024946] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000001            第二个手指有事件  
[    1032.024946] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    0000016c              第二个 Y坐标
[    1032.024946] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             
[    1032.907686] /dev/input/event1: EV_SYN       0004                 00000408            
[    1032.907686] /dev/input/event1: EV_SYN       0005                 35ebac8c            
[    1032.907686] /dev/input/event1: EV_ABS       ABS_MT_TRACKING_ID   ffffffff            第二个手指消失抬起  
[    1032.907686] /dev/input/event1: EV_KEY       BTN_TOUCH            UP                  抬起
[    1032.907686] /dev/input/event1: EV_KEY       BTN_TOOL_FINGER      UP                  
[    1032.907686] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             

更多推荐blog :https://blog.csdn.net/learnframework/article/details/123318219

以上是关于android多指控制协议详细解答的主要内容,如果未能解决你的问题,请参考以下文章

android多指控制协议详细解答

如何在离子应用程序中检测多指触摸

在我的应用程序中禁用多指触摸[重复]

Linux Android 多点触摸协议 原文出自比特网,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml

Android的View 事件传递

tcp协议中,发送方发送某一报文段携带100字节数据,首部序号101,若。。。 求大神详细解答~~~~