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. Android读取sql文件并导入数据库
  2. Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,
  3. Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
  4. Android的XML布局文件中layout_width和width的区别
  5. Android应用程序窗口View的创建过程
  6. Android 资源文件介绍
  7. android 中java编程的意外事件处理
  8. Android执行文件apk的组成结构
  9. android 删除文件以及递归删除文件夹

随机推荐

  1. android api code学习--第一个比较完整的
  2. 【转】 Android系统集成第三方pre-build
  3. android 自定义进度条颜色
  4. Activity的启动流程(基于Android(安卓)10
  5. Android(安卓)系统启动过程详解
  6. 理解 Android(安卓)进程启动之全过程
  7. 利用HTML5开发Android
  8. Android(安卓)-- Looper.prepare()和Loop
  9. 如何实现Android(安卓)APP静默安装
  10. Android之UI学习篇八:使用GridView实现九