原始输入事件处理
流程图
InputDevice
InputDevice相对于EventHub的Device多了一个InputMapper列表。
void InputReader::addDeviceLocked(nsecs_t when, int32_t deviceId){
//1 从EventHub 中获取厂商信息与设备类别
//2 通过createDeviceLocked()函数创建InputDeveice
InputDevice* device = createDeviceLocked(deviceId, identifier, class);
//3 使用InputRead中保存的策略配置信息对新建的InputDeveice进行策略配置,并通过reset()进行设备重置
deveice->configure(when, &mConfig, 0);
deivece-> reset(when);
//4 将设备放入mDeviecs字典中
mDevices.add(deviceId,device);
}
mConfig的类型是InputReaderConfiguration,来自InputReaderPolicy的配置信息使得IMS以及应用程序得以在一定程度上影响输入事件的处理过程。
keyboard类型事件的加工处理
在Android中扫描码到虚拟按键值的映射便是由KeyboardInputMapper完成的。
touch事件
多条原始输入事件描述一次点击事件,把多次原始输入事件的信息整合后,交给InputDispatch而进行分发。
TouchInputMapper的体系