Android输入系统简介

来源:互联网 发布:淘宝管理软件 编辑:程序博客网 时间:2024/05/18 13:12

1、当输入设备接入到android设备并且可用的时候,Linux内核会在/dev/input/下创建名为event0-n或者其他名称的输入节点,但输入设备不可用的时候,则会删除对应的节点。
2、在用户空间可以通过ioctl的方式从这些设备节点获取对应的输入设备的类型、厂商、描述等信息。
3、当用户对输入设备进行操作的时候,Linux内核会接收到相应的硬件中断,然后将中断加工成原始的输入事件写入到对应的输入节点中,在用户空间可以通过read()函数将事件数据读出。

Android输入系统的大致原理:
监控/event/input/下所有设备节点,当某个节点有数据可读时,将数据读出并进行一系列的翻译加工,然后在所有的窗口中寻找合适的事件接收者。

Android系统提供了getevent与setevent两个工具可以对某个设备节点读取输入事件或者写入输入事件。

getevent可以监听指定输入设备节点的内容,当输入事件写入到该设备节点的时候,getevent会将读出并打印到屏幕上。

adb shell getevent [-选项] [device_path]

其中,device_path为可选参数,表示指明需要监听设备的节点路径,如果省略了就是监听所有设备的节点事件。

输入设备节点不仅在用户空间可读,而且是可写的,因此,可以将原始事件写入到输入节点中,而且实现模拟用户输入的功能。

setevent <节点路径> <类型> <代码> <>

更多可以参考文章:Android代码模拟物理、屏幕点击事件

实时记录用户输入操作的工具:
https://github.com/barzooka/robert

参考文章:
深入理解android 卷3

原创粉丝点击