触摸屏学习记录

最近遇到了几次触摸屏局部无响应的问题,洒家一起整理记录一下下

局部点击无响应,系统报错Dropping event due to no window focus

ViewRootImpl[Launcher]: Dropping event due to no window focus: MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, 
x[0]=0.4687214, y[0]=657.75525, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0,
 pointerCount=1, historySize=0, eventTime=26636320, downTime=26463264, deviceId=2, source=0x1002 }

可以看到此次点击事件被系统抛弃了,一般这个事件抛弃是会发生在窗口切换注销的时候,但问题发生的时候不是这样的。
此时通过getevent却可以查看到点击触摸屏时发送的数据,数据如下
在这里插入图片描述
每次点击都会有数据,但是系统就是判定为异常数据,洒家也是第一次遇到触摸屏的问题,一脸懵逼

/dev/input/event3: EV_ABS       ABS_MT_TRACKING_ID   0000001a
/dev/input/event3: EV_ABS       ABS_MT_POSITION_X    00000886
/dev/input/event3: EV_ABS       ABS_MT_POSITION_Y    000022f5
/dev/input/event3: EV_KEY       BTN_TOUCH            DOWN
/dev/input/event3: EV_ABS       ABS_X                00000886
/dev/input/event3: EV_ABS       ABS_Y                000022f5
/dev/input/event3: EV_SYN       SYN_REPORT           00000000
/dev/input/event3: EV_ABS       ABS_MT_TRACKING_ID   ffffffff
/dev/input/event3: EV_KEY       BTN_TOUCH            UP
/dev/input/event3: EV_SYN       SYN_REPORT           00000000`

这个是正常的单次点击事件,一次点击事件是由一个down,一个up与若干个move组成的,这是单指的点击事件,如果是多指的点击事件则会增加id与move
对比可以发现,触摸异常的时候,发送的数据仅有6位,缺失了up,down,abs_x,abs_y,系统需要up和down区分点击与放开事件,没有这两个值则导致判定为action_move,缺失了abs_x和abs_y导致系统计算为一个固定点,固定点上的Move是没有意义的,所以系统此次点击事件无效处理

顺便记录下触摸屏相关知识

单指按下事件

 input_mt_slot(ts->pen_dev, id);
    input_report_abs(ts->pen_dev, ABS_MT_TRACKING_ID, id);
    input_report_abs(ts->pen_dev, ABS_MT_POSITION_X, x);
    input_report_abs(ts->pen_dev, ABS_MT_POSITION_Y, y);
    input_report_abs(ts->pen_dev, ABS_MT_PRESSURE, w);
    input_report_abs(ts->pen_dev, ABS_MT_TOUCH_MAJOR, w);
input_sync(input);

单指松开

input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, -1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值