我发现此代码来获取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为单位给出预期结果。

07-26 02:55