在 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.
我有一个 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.