我尝试读取当前的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:抱歉英语不好。
答案 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();