Inputflinger 触摸事件的获取,转换与分发
Android的触摸事件是如何获取的
平常我们在应用层开发的时候,当我们想去处理view的触摸事件,可能会写以下的代码:
mView.setOnTouchListener(object : OnTouchListener {
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
}
})
然后根据获取的MotionEvent去处理具体的触摸事件,达成我们想要的效果,那么问题来了,从手指去触摸手机屏幕开始,事件是怎么传递到自定义View的onTouch这里的?
这其实就是Inputflinger的工作了。
首先打开adb shell, 然后输入getevent -lrt,可以看到如下界面:
这个时候我们使用手指滑动屏幕,就可以看到如下的打印:
这里,其实就是驱动层输出的数据了,我们的Inputflinger在触摸这里的处理,就是要将我们从驱动层获取的这些数据,最终发送到我们触摸的View中去,然后去处理我们的上层逻