【问题标题】:How to get current Thermal values in Android Programatically?如何以编程方式获取 Android 中的当前热值?
【发布时间】:2020-10-11 14:20:41
【问题描述】:

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

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

【问题讨论】:

    标签: android android-studio adb


    【解决方案1】:

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

    你可以这样做:

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

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

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

    【讨论】:

    • 但是在这样做之后我将如何访问这些热值。有许多应用程序可以做同样的事情。有没有其他办法?
    • 请提供这些应用的链接,以便我们查看,谢谢!
    【解决方案2】:

    现在我发现以编程方式执行此操作。我使用 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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-16
      • 2014-09-04
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多