cpu的频率信息可以在/sys/devices/system/cpu/cpu0/cpufreq/路径下读取
比如最高频率路径为:/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq(文件内容就是一行字符串:频率值)
这里要注意一点点是cpuinfo_max_freq文件不是一直存在的,读取之前得判断这个文件是否存在(至于这个文件什么时候创建我就不清楚了)
比如在循环中读取
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq
/sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_max_freq
……
因为我们读取的是文件,所以有两种方式
第一种是执行cat命令
第二种是直接打开文件读取,比如RandomAccessFile类直接打开读取第一行
……
//coreCount是cpu个数,这个是通过统计/sys/devices/system/cpu/cpu0的个数得到的(cpu命令方式:cpu0,cpu1,cpu2……)
for (int i = 0; i < coreCount; i++) { target = new File(String.format("/sys/devices/system/cpu/cpu%d/cpufreq", i), "cpuinfo_max_freq"); if (target.exists()) { try { cmd = new ProcessBuilder("/system/bin/cat",target.getPath()); process = cmd.start(); reader = new BufferedReader(new InputStreamReader(process.getInputStream())); readLine = reader.readLine(); if (!TextUtils.isEmpty(readLine)) { maxFreq= readLine; break; } } catch (IOException ex) { maxFreq= null; ex.printStackTrace(); }
//finally中释放各种资源 } }
……