Android输入系统简介

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

欢迎关注微信公众号:DroidMind
精品内容独家发布平台


呈现与博客不一样的技术干货

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值