android从输入事件上报概况(一)
来源:互联网 发布:淘宝网店新手 编辑:程序博客网 时间:2024/06/11 17:43
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每块的处理会在后面的文章中进行分别解析。
- android从输入事件上报概况(一)
- Android输入事件从读取到分发一:是谁在读取输入事件
- Android输入事件从读取到分发一:是谁在读取输入事件
- Android蓝牙开发(一):概况
- Android event事件上报方法
- Hadoop(一)概况
- Spring(一)概况
- GPhone--Android学习笔记(一):Android概况及工具
- android耳机插入\拔出事件上报流程
- Android处理输入事件的流程(一)
- Spring框架概况(一)
- diy数据库(一)--概况
- SVM笔记(一) 概况
- Struts知识点概况(一)
- Hibernate知识点概况(一)
- Spring知识点概况(一)
- 产品经理(一)概况
- springmvc知识点概况(一)
- 编程之美——计算字符串的相似度
- 在ie6下面,overflow与text-indent:-9999px 字体隐藏
- 【转】OpenCV实现人脸检测
- Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/Synchronization
- TOMCAT部署项目
- android从输入事件上报概况(一)
- No connection properties specified - the user must supply JDBC connections 的解决办法
- Android 公共库的建立方法
- 文件存储之读写SD卡中的文件小记
- OpenCV HOGDescriptor 参数图解
- ubuntu12.04 安装桌面环境 及vnc配置
- ftp能够连接,但是不能传数据原因剖析
- oracle视图总结(转)
- jquery xpath选择符