在 Android 上使用 getevent 工具转储输入设备文件

Dump input device file using getevent tool on Android

我有一个 root Android 7 phone,我想转储 unix 输入事件文件。使用 adb 我可以使用以下命令来完成它:

adb shell getevent -t /dev/input/event7 > recorded_touch_events.txt

这会将 event7 文件转储到 recorded_touch_events.txt。但这仅在 phone 通过 usb 电缆与 PC 连接时有效。使用 Android 我可以使用以下代码转储文件:

th = new Thread(new Runnable(){
        private Process exec;

        @Override
        public void run() {
            try {
                exec = Runtime.getRuntime().exec(new String[]{"su","-c","getevent -t /dev/input/event7"});
                InputStreamReader is = new InputStreamReader(
                        exec.getInputStream());
                String s;
                BufferedReader br = new BufferedReader(is);
                while(((s = br.readLine()) != null) && run){
                    // write line to text file
                }
                is.close();
                exec.destroy();
            } catch (IOException e) {
                e.printStackTrace();
            } 
}

通过这种方式,我可以将读取的每一行都存储在一个文本文件中。

是否有其他方法(可能更快)直接转储事件文件?

当然,你做得对。

getevent 用于以人类可读的形式打印输入事件。例如在交互式调试会话期间。您不需要将 getevent 用于 转储 或任何其他计算机处理任务。只需打开并读取输入文件。事件记录格式为very simple.