Я пытаюсь получить информацию о процессоре смартфона. Я могу получить это из отображения файла / proc / cpuinfo. Однако его вывод плохой и нечитаемый. Я хотел бы получить вывод, подобный команде «lscpu», но когда я выполняю команду «lscpu» из своего приложения, у меня нет разрешений на это (однако я могу сделать это с консоли Termux на моем телефоне, и вывод доступен для чтения). У вас есть какие-либо идеи, как сделать человека читаемым?
Вот код для просмотра файла / proc / cpuinfo:
static class CMDExecute {
synchronized String run(String[] cmd)
throws IOException {
String result = "";
try {
ProcessBuilder builder = new ProcessBuilder(cmd);
builder.redirectErrorStream(true);
Process process = builder.start();
InputStream in = process.getInputStream();
byte[] re = new byte[1024];
while (in.read(re) != -1) {
System.out.println(new String(re));
result = result + new String(re);
}
in.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
}
private static StringBuffer buffer;
public static void fetch_cpu_info() {
String result = null;
CMDExecute cmdexe = new CMDExecute();
try {
String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
result = cmdexe.run(args);
System.out.println("RESULT\n" + result);
} catch (IOException ex) {
ex.printStackTrace();
}
}
и его вывод:
I / System .out: RESULT
processor : 0
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 1
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 2
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 3
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
Как вы видите, это очень плохой результат. Когда я пытаюсь выполнить команду «lscpu» из моего кода, меняя только одну строку:
String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
на
String[] args = {"lscpu"};
Я получаю ошибку:
W / System.err: java .io.IOException: Невозможно запустить программу "lscpu": ошибка = 13, разрешение отклонено
Однако на моем телефоне установлено приложение Termux. Это консоль оболочки, и я не знаю почему, но я могу выполнить «lscpu» в этой консоли (я не могу из кода приложения). Проверьте это:
lscpuoutput
Я хотел бы получить этот вывод в свое приложение. Есть ли у вас какие-либо идеи, как получить этот приятный для восприятия человек вывод информации о процессоре?
Буду признателен за любую помощь!