我发现此代码来获取Cpu频率。在Android中:
private String ReadCPUMhz()
{
ProcessBuilder cmd;
String result="";
int resultshow = 0;
try{
String[] args = {"/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq"};
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re = new byte[1024];
while(in.read(re) != -1)
{
result = result + new String(re);
}
in.close();
} catch(IOException ex){
ex.printStackTrace();
}
return result;
}
问题在于结果在Khz中而不是Mhz中,所以我得到类似以下内容:
300000
..如何在Mhz中转换?一个用户在一段时间前写道,它使用以下方法找到了解决方案:result.trim()
正如您在此处看到的Convert khz value from CPU into mhz or ghz,但他没有解释如何使用它。有人知道吗?谢谢
最佳答案
在您提到的帖子中,错误
invalid int: "192000 "
确实可以通过在调用之前使用String.trim()来避免
Integer.parseInt(result);
因为在字符串“ 192000”中,末尾有多余的空间需要删除。 String类的trim()方法删除前导和尾随空格:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#trim%28%29
因此,根据您的示例代码:
/* replace XXXX by the name of the
class that holds method `ReadCPUMhz()`
*/
XXX instance = new XXX(); // supposing class XXX has such a constructor
String result = instance.ReadCPUMhz().trim(); // removes leading & trailing spaces
int kHzValue = Integer.parseInt(result); // result in kHz
int MHzResult = kHzValue / 1000; // result in MHz
应该以MHz为单位给出预期结果。