java - 如何提高android中输入命令的速度?

标签 java android command

我正在开展一个项目,旨在帮助残疾人更好地使用他们的 Android 设备(主要用于教育目的)。我们提出了一些关于替代输入设备的想法,并使用输入命令在屏幕上重播该设备。目前,我们必须root手机并使用输入命令

input tab x y

但执行单个选项卡大约需要 3 秒,速度太慢。 在深入研究文档后,我发现了 sendevent.c 并且我意识到它为每个命令打开和关闭接口(interface)文件。无论如何,我可以将输入直接写入该文件,这可能会改善每个选项卡的延迟吗?

有没有其他方法可以重播输入?我知道应用程序商店中的许多应用程序也可以在没有 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;
            }
        }

最佳答案

所以我实际上是对一些键盘这样做的。我们所做的是将正在发生的事件记录在日志文件中。然后,我们编写了代码,通过创建一个线程来重播该文件,然后读入该文件并在同一时间以相同的顺序发出直接触摸/键盘/其他事件, hibernate 直到需要创建下一个命令。效果相当不错,但调试速度很慢。

然后,我们重写了所有算法,以处理输入中嵌入时间的输入流。然后我们可以伪造任何我们想要的输入集。这对于调试来说非常快,并成为我们的 goto 方法。

关于java - 如何提高android中输入命令的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55883648/

相关文章:

Java AES加密: need files to decrypt properly in freely available decryptor tools

java - Android 上 'onCreate' 方法中的问题

android - 像 whatsapp 这样的列表项目容器

android - 我应该为 appium 测试脚本使用什么样的驱动程序

java - 尝试获取应用程序对象时偶尔发生崩溃

command - 如何使用 ansible 在命令任务中运行 sh 脚本

java - 如何使用Java显示存储在数组列表中的特定值

java - 为什么 MANIFEST.MF 文件包含有关打包在存档中的其他文件的信息?

linux - lsof 列出的管道的 FD 列是什么意思?

linux - 顶部 'xterm' : unknown terminal type