最近想实现触摸屏的事件记录,并且分别做时间戳标记,类似于adb shell 下的getevent/setevent,查了很多资料,下面是一些总结。
实现方法:
1、利用onclick方法等。这种方法只能用于自己的Activity和View中,如果要检测其他Activity,比如键盘就不行了。
2、从linux内核入手。在事件分发前截获事件,可以对任意Activity实现事件捕获。
android触摸事件的流程:
http://blog.csdn.net/sunnyfans/article/details/8221505
在linux内核中,是直接向/dev/input/event*写入事件,然后另一个线程不断冲中读取事件。所以要实现监听与注入,就是实现对/dev/input/event*的读取和写入。
要求:
1、ROOT
2、获取su(超级用户权限)
分析event:
要明确各event代表的意思,我们用adb shell下的getevent 来说明
图上从上往下可以看到event6代表compass(指南针),event3代表触摸屏,下面是监听到的event7(光线感应)的事件。具体的协议可以参看这篇文章http://www.ddjava.com/blog/blog.html?blogId=612
此种方法可以实现在PC上对android设备事件的监听,但缺点是要连着电脑。如果无所谓脸部连着电脑,就可以到此为止了,再附送个处理数据的脚本http://www.jtben.com/document/919575
c4droid实现:
c4droid是一款在android手机上编译运行C/C++的应用,可以用c语言直接对底层linux内核操作。
http://tieba.baidu.com/p/2960331527#48299953890l
JAVA实现:
正在学习中···直播
获取su、监听dev/input/event*·····