发布网友 发布时间:2024-10-24 09:43
共1个回答
热心网友 时间:2024-10-31 23:45
手机的输入设备主要分为键盘和触摸两种类型。本文主要关注触摸事件的处理流程,特别是通过MultiTouchInputMapper进行多点触摸事件的管理。
InputReader接收到事件后,会交给InputMapper处理。对于触摸设备,多点触摸的设备由MultiTouchInputMapper负责,而单点触摸则由SingleTouchInputMapper处理。以滑动手指为例,驱动首先上报坐标信息和同步事件。
MultiTouchInputMapper处理过程包括收集触摸事件信息,如ABS_MT_SLOT(表示手指槽位)、ABS_MT_TRACKING_ID(手指标识)和坐标信息。A/B协议,即slot协议,是理解这一过程的关键,它通过槽位标识每个手指的独特事件。
累加器MultiTouchMotionAccumulator收集这些数据,区分不同手指的动作。同步事件随后处理,将驱动上报的元数据同步到RawPointerData,并通过CookedPointerData进行加工,包括坐标转换等。
最终,经过加工的数据被转化为高级事件,如DOWN、MOVE、UP,然后分发给InputClassifier。对于自定义View的开发者,这些基础处理步骤是熟悉的。记住,理解基础是处理复杂事件的基础,后续会探讨更多,如手势导航等。