参考:http://www.cnblogs.com/canselwicecs/archive/2012/12/24/2831540.html

因为getevent和sendevent是android封装好的工具,有些信息会丢失。比如事件发生的时间信息。另外,手机的事件会分别放置到几个设备文件(event0,event1,event2,event3)。所以,要完整录制,需要同时记录多个设备发生的事件。

具体的做法是循环遍历监测这些设备文件是否可读(使用POLLIN事件),如果发生表明有事件可读,为均衡起见,每个设备文件每次循环只读一条事件记录。将这些事件写入文件,为了标识事件是来自哪个设备文件,可以在事件二进制码前写入设备序号(前面的0,1,2,3),然后再写入事件的二进制数据。回放时,读取该文件,结合事件发生的时间以及当前时间,添补必要的时间延时,按照事件发生的id,将事件写入到对应的设备文件即可完成事件回放。

参考代码:android源码:/system/core/toolbox/getevent.c以及/system/core/toolbox/sendevent.c