我想通过使用:
在应用程序内部启动getevent
进程
Process get_event_process = Runtime.getRuntime().exec("getevent");
并使用BufferedReader
:
BufferedReader buffered_reader = new BufferedReader
(new InputStreamReader(get_event_process.getInputStream()));
String line = "";
log = new StringBuilder();
while((line = buffered_reader.readLine()) != null) {
log.append(line);
}
主要问题是getevent
进程永远不会结束,除非它被杀死。如果我杀了这个过程,我将失去我的InputStream
。
有没有办法打断,暂停进程,并在此之前获得生成的输入?
或者有没有办法保存像sh -c getevent
这样永不停止的过程的输入,即使我杀了这个过程?
答案 0 :(得分:1)
好的,我找到了使用ProcessBuilder而不是Process的解决方案。
ProcessBuilder builder = new ProcessBuilder().command("getevent").redirectErrorStream(true);
Process get_event_process = builder.start();
不幸的是,它会停留在while循环中并给出如下输出:
/dev/input/event5 Permission denied.
/dev/input/event4 Permission denied.
/dev/input/event3 Permission denied.
/dev/input/event2 Permission denied.
/dev/input/event1 Permission denied.
/dev/input/event0 Permission denied.
因此,使用root手机,您可以使用以下方式获取输出:
chmod 666 /dev/input/*
干杯。