Android系统的事件输入基于linux的Input子系统。触控屏事件和按键事件,从哪里输入又往哪里输出,虽然这个流程大部分对于Android系统来说是透明的,但是在多display,多窗口,多屏幕的情况下是值得研究的。
input对应各种输入事件,通过IMS,WMS,给到对应的window去处理事件,附一张最简化的事件传递流程:
1、Android Input子系统简介
事件的输入
事件的输入,是从不同类获的设备得到不同的事件类型,事件类型也都是定义在/include/linux/input.h文件中。
adb shell getevent -l -c 16 add device 1: /dev/input/event0 name: "ACCDET" add device 2: /dev/input/event3 name: "goodix_ts" add device 3: /dev/input/event2 name: "aw8697_haptic" add device 4: /dev/input/event1 name: "mtk-kpd" //按键 adb shell getevent -l /dev/input/event1 EV_KEY KEY_VOLUMEDOWN DOWN EV_SYN SYN_REPORT 00000000 EV_KEY KEY_VOLUMEDOWN UP EV_SYN SYN_REPORT 00000000 EV_KEY KEY_VOLUMEUP DOWN EV_SYN SYN_REPORT 00000000 EV_KEY KEY_VOLUMEUP UP EV_SYN SYN_REPORT 00000000 //触摸 adb shell getevent -l /dev/input/event3 EV_ABS ABS_MT_TRACKING_ID 0000036c EV_ABS ABS_MT_POSITION_X 000001fe EV_ABS ABS_MT_POSITION_Y 00000717 EV_KEY BTN_TOUCH DOWN EV_SYN SYN_REPORT 00000000 EV_ABS ABS_MT_POSITION_X 00000207 EV_SYN SYN_REPORT 00000000 EV_ABS ABS_MT_POSITION_X 00000219 EV_ABS ABS_MT_POSITION_Y 00000716
添加评论