获取Android设备的处理器硬件名称

Viv*_*rde 5 android

/proc/cpuinfo使用下面的代码执行以获取 Android 设备中 CPU 的详细信息。

        try {
            Process proc = Runtime.getRuntime().exec("cat /proc/cpuinfo");
            InputStream is = proc.getInputStream();
            TextView tv = (TextView)rootView.findViewById(R.id.textView1);
            tv.setText(getStringFromInputStream(is));
        } 
        catch (IOException e) {
            Log.e("TAG", "------ getCpuInfo " + e.getMessage());
        }
Run Code Online (Sandbox Code Playgroud)

其中它还返回硬件名称。我得到的硬件名称的格式不正确。我已经在 Samsung Note 3、Micromax Canvas Doodle A111、Micromax Turbo A250 等各种设备上进行了测试。

这是我分别在这些设备中得到的:

  • 三星 EXYNOS5420:(但我需要这个名称Samsung Exynos Octa 5420
  • QRD MSM8625Q EVBD :(需要名称Qualcomm Snapdragon 200
  • MT6589 :(联发科 MT6589

我该如何克服这个问题,请帮助!

ini*_*mfs 2

我似乎有点不清楚你的 CPU 功能或设备信息是否一般,但无论如何......

Android 提供了一个名为Build的漂亮小类,它可以直接通过类的静态字段为您提供大量信息。该类提供了很多设备级的信息,如下所示:

直接取自我的 HTC One M8(省略了一些字段):

Build.BOARD: MSM8974
Build.BOOTLOADER: 3.19.0.0000
Build.BRAND: htc
Build.DEVICE: htc_m8
Build.DISPLAY: cm_m8-userdebug 5.1.1 LMY47V 47d6aee9c3 test-keys
Build.HARDWARE: qcom
Build.MANUFACTURER: htc
Build.MODEL: One M8
Build.PRODUCT: cm_m8
Run Code Online (Sandbox Code Playgroud)

从外观上看,它Build.BRAND + " " + Build.MODEL就像你想要的那样。

虽然文档不保证任何字段的标准化,但这可能比Runtime.exec("cat /proc/cpuinfo")从那里调用和解析更好。

如果您想要 CPU 级别的功能,您可以尝试使用 android cpufeatures 库从本机代码执行操作,调用该函数:

uint64_t android_getCpuFeatures();
Run Code Online (Sandbox Code Playgroud)

获取包含许多 CPU 功能标志的 int。