【android学习】安卓设备实现触摸事件的监听,跨进程事件注入

来源:互联网 发布:同志直播软件 编辑:程序博客网 时间:2024/05/13 13:46

最近想实现触摸屏的事件记录,并且分别做时间戳标记,类似于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实现:

android中有个Process process = Runtime.getRuntime().exec()方法可以直接调用linux内核

如获取root权限

process = Runtime.getRuntime().exec("su");

就会弹出请求root权限的对话框。

正在尝试通过此方法直接调用getevent和sendevent

获取su、监听dev/input/event*·····

1 2
原创粉丝点击