在Android

时间:2018-11-12 17:40:52

标签: android unix adb

我有一个扎根的Android 7手机,我想转储unix输入事件文件。使用adb,我可以使用以下命令进行操作:

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

这会将event7文件转储到recorded_touch_events.txt中。但这仅在通过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();
            } 
}

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

肯定,您做对了。