11

我想获得类似于 DU Booster 的处理器型号。CPU 型号包含 ARM 处理器版本和修订版。例如:ARMv7 处理器版本 3 (v7l)

我试过这个 System.getProperty("os.arch")只返回架构

String[] args = {"/system/bin/cat", "/proc/cpuinfo"}; 

获取 CPU 信息。我能够在某些设备中获得正确的信息,但不是全部。

我在华硕 Fonepad 7 中试过这个,它不返回处理器的属性(但返回处理器(小 p)

它返回像

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 53
model name  : Intel(R) Atom(TM) CPU Z2520  @ 1.20GHz
stepping    : 1
microcode   : 0x10e
cpu MHz     : 800.000
cache size  : 512 KB
physical id : 0
siblings    : 4

我想得到像"ARMv7 Processor rev 3 (v7l)"这样的结果。提前致谢..

4

2 回答 2

15

您不需要实现分离的方法来处理不同的处理器类型,只需在获取文件时将model_name密钥替换为何cpu_model时需要:/proc/cpuinfo

    public static Map<String, String> getCPUInfo () throws IOException {

        BufferedReader br = new BufferedReader (new FileReader ("/proc/cpuinfo"));

        String str;

        Map<String, String> output = new HashMap<> ();

        while ((str = br.readLine ()) != null) {

            String[] data = str.split (":");

            if (data.length > 1) {

                String key = data[0].trim ().replace (" ", "_");
                if (key.equals ("model_name")) key = "cpu_model";

                output.put (key, data[1].trim ());

            }

        }

        br.close ();

        return output;

    }
于 2017-07-20T21:33:58.220 回答
1

这是一种简单的方法,您可以使用 Patterns 来完成,但这需要大量 TaE(反复试验)

String unparsed_CPU_INFO;

onCreate{

        // cpu info
                    String result = null;
                    CMDExecute cmdexe = new CMDExecute();
                    try {
                        String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
                        result = cmdexe.run(args, "/system/bin/");
                        Log.i("result", "result=" + result);
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }


                    unparsed_CPU_INFO = result;

System.out.println("Your cpu model is: " ++ getCPUName());
}

    public synchronized String getCPUName() {
                if (cpuName == null) {
                    String CPUName = "";

                    String[] lines = unparsed_CPU_INFO.split("\n");

                    for (int i = 0; i < lines.length; i++) {

                        String temp = lines[i];

                        if (lines[i].contains("Processor\t:")) {

                            CPUName = lines[i].replace("Processor\t: ", "");
                            break;
                        }
                    }
                    cpuName = CPUName;
                    return CPUName;
                } else {
                    return cpuName;
                }
            }
于 2015-08-03T09:08:17.567 回答