В эмуляторе терминала android я могу вводить следующие команды:
> su
> echo $(</sys/class/power_supply/battery/charge_rate)
, и в зависимости от того, как телефон заряжается, выход будет «Нет», «Нормальный» или «Турбо». Я хотел бы иметь возможность получить этот вывод и сохранить его в виде строкового значения в моей программе.
Итак, я провел небольшое исследование этого и код, который я пришел в итоге получается следующее:
String chargeRate = "None";
try {
Runtime rt = Runtime.getRuntime();
Process process = rt.exec("su \"\"echo $(</sys/class/power_supply/battery/charge_rate)");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
if ((chargeRate = stdInput.readLine()) == null)
chargeRate = "None";
}
catch (Exception e) {
// TODO
}
Это взято из ряда разных ответов, и я не совсем уверен, что с ним не так. Я не могу перешагнуть или пройти эту строку во время отладки:
if ((chargeRate = stdInput.readLine()) == null)
Как только отладчик достигает этой строки, он говорит: «Приложение работает»