android从输入事件上报概况(一)

本文介绍Android系统如何通过监听特定文件来获取输入事件,并通过InputReaderThread和InputDispatcherThread线程来读取和分发事件。文章还解释了事件是如何被分发到应用程序窗口的过程。
android输入事件上报概况

       android怎么获取输入事件?输入事件怎么派发到对应的窗口上?

1、android input设计思想

     

      驱动侦听到用户在不同设备上的input事件,将事件输出到文件中,android通过监听这些文件来得知事件的上报,然后派发给对应的view。以下是手机系统中的事件输出文件,每个文件代表一种或者多种事件类型。

add device 1: /dev/input/event0
  name:     "lsm303dlhc_acc" 
add device 2: /dev/input/event1
  name:     "lsm303dlhc_mag" 
add device 3: /dev/input/event5
  name:     "7k_handset"    
add device 4: /dev/input/event4
  name:     "7x27a_kp"    
add device 5: /dev/input/event3
  name:     "ft5x0x_ts"    
add device 6: /dev/input/event2
  name:     "tmd2771x"  

lsm303dlhc_acc: msensor

lsm303dlhc_mag:gsensor

7k_handset:耳机插拔事件

7x27a_kp:keypad 主要是一些物理按键的事件,音量加减键等

ft5x0x_ts:tp,这里包含虚拟按键、屏幕的touch事件等

tmd2771x:psensor 和lsensor

2、功能分析

    对应的设备驱动监听到事件的改变就会将对应的事件写入到上述的文件中,android 监听到这些文件有变化就读取当前的事件,然后派发。

   android framework有两个线程负责读取和派发,它们是在初始化wms时启动的,然后一直运行,其中InputReaderThread负责读取设备文件中的事件,InputDispatcherThread线程负责派发获取到的事件。

    派发事件,对于key来说会在wms中进行预处理,然后才会派发到对应的窗口上,touch事件会直接派发到对应的窗口上,android是怎么派发到客户窗口的呢?在android 2.3以后采用管道的方式,以前的版本采用binder通信。客户窗口事先会注册好管道,在客户进程通过读取管道中事件,然后进行窗口内部的派发。

3、总结

   对于android每块的处理会在后面的文章中进行分别解析。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值