【发布时间】:2016-07-20 10:24:51
【问题描述】:
我想在整个 Android 系统中发送触摸事件。我正在从后台服务发送事件。我的设备已植根,我已将我的应用程序存储在 /system/app.
我试过instrumentation and system/bin/input tab,检测在应用程序之外不起作用,第二个不会产生错误,但什么也没做。我试过直接注入/dev/input/event2,但没有效果。
代码如下:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
Process process = Runtime.getRuntime().exec("su");//supolicy --live \"allow appdomain input_device dir { ioctl read getattr search open }\" \"allow appdomain input_device chr_file { ioctl read write getattr lock append open }\"");
Runtime.getRuntime().exec ("su chmod 666 /dev/input/event2");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
String cmd = "su /dev/input/event2 ABS_X "+ xPos + " ABS_Y "+ yPos+ "\n";
Runtime.getRuntime().exec(cmd);
}
catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
我使用这个网站作为参考:https://yhcting.wordpress.com/2010/11/29/linux-writing-input-event-directly/,但我不确定我是否正确应用它。如何在 /dev/input/event2 中注入事件?
另外,/dev/input/eventX 是什么?我总是看到它,但不清楚它是输入节点还是只是事件节点的一般指示。最后,我如何知道应该将事件发送到哪个事件节点(event1、event2 等)?
编辑:我通过 adb shell 尝试了 su /dev/input/event2 ABS_X xPos ABS_Y yPos 我收到一条信息:unknown username or uid,这是什么意思?
谢谢。
【问题讨论】:
标签: android linux linux-kernel touchscreen