0

現在の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: 下手な英語でごめんなさい。

4

1 に答える 1

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();
于 2013-11-08T12:18:14.277 に答える