【发布时间】:2020-10-11 14:20:41
【问题描述】:
我正在尝试以编程方式获取设备的热值。我可以在 adb 中执行此操作,但无法以编程方式执行此操作。如何遍历目录“热”中的每个目录以获取特定值。我的部分代码如下:
Process p=Runtime.getRuntime().exec("cd sys/class/thermal/");
【问题讨论】:
标签: android android-studio adb
我正在尝试以编程方式获取设备的热值。我可以在 adb 中执行此操作,但无法以编程方式执行此操作。如何遍历目录“热”中的每个目录以获取特定值。我的部分代码如下:
Process p=Runtime.getRuntime().exec("cd sys/class/thermal/");
【问题讨论】:
标签: android android-studio adb
您无法通过应用访问/sys/class/thermal/,因为与(root)adb shell 相比,执行该操作的用户(例如u0_aXYZ)没有足够的权限来执行此操作。
你可以这样做:
adb shell
run-as your-app-package-name
从现在开始,您可以浏览设备文件系统并查看您的应用可以访问的文件夹。
如果你想继续,你唯一的选择是拥有一个 root 设备并构建一个具有 root 权限的应用程序。
【讨论】:
现在我发现以编程方式执行此操作。我使用 for 循环来查找值。访问详细解答here.
for(int i=0;i<29;i++){
float temp;
Process process = Runtime.getRuntime().exec("cat sys/class/thermal/thermal_zone" + i + "/temp");
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = reader.readLine();
if (line != null) {
temp = Float.parseFloat(line);
}
reader.close();
process.destroy();
}
【讨论】: