获取安卓设备处理器硬件名称

5

我使用以下代码执行/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());
        }

这个程序返回的信息中包括硬件名称。但我得到的硬件名称格式不规范易读。我在各种设备上进行了测试,如三星Note 3、Micromax Canvas Doodle A111、Micromax Turbo A250。

分别在这些设备上获得以下信息:

  • Samsung EXYNOS5420:(但我需要的是这个名字三星Exynos Octa 5420
  • QRD MSM8625Q EVBD:(需要名字高通骁龙200
  • MT6589:(联发科MT6589

我该如何解决这个问题?请帮帮我!


你能告诉我你在这个应用程序中看到了哪些细节吗: https://play.google.com/store/apps/details?id=com.dama.hardwareinfo&hl=en - Shishir Shetty
1个回答

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

从外观上看,Build.BRAND + " " + Build.MODEL 看起来是你想要的。

尽管文档不保证任何字段的标准化,但这比调用 Runtime.exec("cat /proc/cpuinfo") 并从那里解析要好。

如果您想要CPU级别的功能,则可以尝试使用android cpufeatures库从本地代码调用以下函数:

uint64_t android_getCpuFeatures();

获取包含多个CPU特征标志的整数。

谢谢,您能否更详细地解释一下如何使用本地代码?我从未进行过本地编程! - Vivek Warde
@vivekwarde 去看一下关于Android NDK的教程。它的规范类似于JNI,但是Android提供了自己的构建工具。 - initramfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接