我正在从事一个旨在帮助残疾人更好地使用其Android设备的项目(主要用于教育)。我们提出了有关替代输入设备的一些想法,并使用输入命令在屏幕上重播了该信息。此刻,我们必须使手机扎根并使用输入命令
input tab x y
但是执行单个选项卡大约需要3秒钟,这太慢了。
在深入研究文档之后,我遇到了sendevent.c
,并且我意识到它为每个命令打开和关闭接口文件。无论如何,我可以直接将输入写入该文件,这可以改善每个选项卡的延迟吗?
是否有其他方法可以重播输入?我知道appstore上的许多应用程序也可以非常快速地执行制表符,而无需root用户。
非常感谢您
编辑:这是我正在使用的代码块:
int i = 0;
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
while (true){
try {
Process process = null;
process = Runtime.getRuntime().exec("su", null, null);
DataOutputStream os = new DataOutputStream(process.getOutputStream());
String cmd = "/system/bin/input tap " + 273 + " " + (232+90) + "\n"; //760 116
os.writeBytes(cmd);
os.writeBytes("exit\n");
os.flush();
os.close();
process.waitFor();
} catch(Exception e) {
Log.i("CommandSU", e.toString());
i--;
}
i++;
if (i >= 1){
break;
}
}
答案 0 :(得分:0)
所以我实际上是为某些键盘这样做的。我们所做的是将事件的发生情况记录在日志文件中。然后,我们编写了代码,通过创建一个线程,然后读入该文件并在相同的时间按相同的顺序进行直接触摸/键盘/其他事件来重放该文件,直到它需要创建下一个命令为止。效果很好,但是调试很慢。
然后,我们重新编写所有算法,以对输入流进行处理,并在输入中嵌入时间。然后,我们可以伪造我们想要的任何输入集。调试非常有效,并成为我们的goto方法。