读取当前CPU频率

时间:2013-06-06 13:22:43

标签: android cpu bufferedreader frequency processbuilder

我尝试读取当前的cpu频率。经过一些研究,我发现了以下代码:

public String ReadCPUMhz2() throws IOException
{
      String[] args = {"/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"};

      ProcessBuilder cmd;
      cmd = new ProcessBuilder(args);
      Process process = null;
      process = cmd.start();

      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

      StringBuilder log=new StringBuilder();

      String line;
      Log.d("test","aha");
      while ((line = bufferedReader.readLine()) != null) {
        log.append(line + "\n");
      }
      Log.d("test",log.toString());
      return log.toString();
}

但那没有做任何事情。 Logcat在while循环之前显示“aha”,但“log”似乎是空的。我看不出我做错了什么:s?

PS:抱歉英语不好。

1 个答案:

答案 0 :(得分:9)

cpuinfo_max_freq将为您提供最大频率而非当前频率。还有另一个值,scaling_cur_freq(在/ sys / devices / system / cpu / cpu0 / cpufreq / scaling_cur_freq中找到),它将为您提供当前频率。

我访问cpuinfo_max_freq的方式是这样,也许你可以将它应用于scaling_cur_freq并查看它是否有效?

String cpuMaxFreq = "";
    RandomAccessFile reader = new RandomAccessFile("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq", "r");
    cpuMaxFreq = reader.readLine();
    reader.close();