如何以编程方式获取 Android 中的当前热值?

How to get current Thermal values in Android Programatically?

我正在尝试以编程方式获取设备的热值。我可以在 adb 中执行此操作,但无法以编程方式执行此操作。我如何遍历目录“thermal”中的每个目录以获取特定值。我的部分代码如下:

Process p=Runtime.getRuntime().exec("cd sys/class/thermal/");

您无法通过应用程序访问 /sys/class/thermal/,因为执行该操作的用户(例如 u0_aXYZ)与(root)相比没有足够的权限来执行此操作 adb shell.

你可以这样做:

adb shell
run-as your-app-package-name

从现在开始,您可以浏览设备文件系统并查看您的应用程序可以访问的文件夹。

如果你想继续,你唯一的选择是拥有一个 root 设备并构建一个具有 root 权限的应用程序。

现在我发现可以编程方式执行此操作。我使用 for 循环来查找值。访问详细答案

    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();
}