【问题标题】:Android: Get Hardware Information ProgrammaticallyAndroid:以编程方式获取硬件信息
【发布时间】:2012-05-08 10:30:05
【问题描述】:

我需要在运行我的应用程序的 Android 设备上获取硬件相关信息。我需要以下类型的信息。

  • CPU 制造商、型号和序列号
  • SD 卡制造商和序列号
  • 相机制造商和其他相关规格
  • 蓝牙相关硬件信息
  • WiFi相关硬件信息
  • RAM 供应商/型号
  • 显示器供应商和型号

我们将非常感谢有关此主题的任何帮助。

【问题讨论】:

  • 试试getResources().getConfiguration();
  • @heshan Perera-你找到这些硬件信息了吗,如果有,请更新你的答案,以便像我这样的其他人可以从中获得帮助。谢谢。,
  • @Khanna 不,我没有找到这些信息。

标签: android android-hardware


【解决方案1】:
    Log.i("TAG", "SERIAL: " + Build.SERIAL);
    Log.i("TAG","MODEL: " + Build.MODEL);
    Log.i("TAG","ID: " + Build.ID);
    Log.i("TAG","Manufacture: " + Build.MANUFACTURER);
    Log.i("TAG","brand: " + Build.BRAND);
    Log.i("TAG","type: " + Build.TYPE);
    Log.i("TAG","user: " + Build.USER);
    Log.i("TAG","BASE: " + Build.VERSION_CODES.BASE);
    Log.i("TAG","INCREMENTAL " + Build.VERSION.INCREMENTAL);
    Log.i("TAG","SDK  " + Build.VERSION.SDK);
    Log.i("TAG","BOARD: " + Build.BOARD);
    Log.i("TAG","BRAND " + Build.BRAND);
    Log.i("TAG","HOST " + Build.HOST);
    Log.i("TAG","FINGERPRINT: "+Build.FINGERPRINT);
    Log.i("TAG","Version Code: " + Build.VERSION.RELEASE);

【讨论】:

    【解决方案2】:
    Log.i("ManuFacturer :", Build.MANUFACTURER);
    Log.i("Board : ", Build.BOARD);
    Log.i("Display : ", Build.DISPLAY);
    

    更多信息请访问http://developer.android.com/reference/android/os/Build.html

    【讨论】:

    • 是的,我看到了这个,但它不符合我的要求。它没有为我提供任何信息,例如 CPU 供应商、时钟速度等。有没有办法通过这个类访问这些信息?
    • 我也想知道设备相机规格
    【解决方案3】:

    **此代码为您提供有关以下信息的信息**

    1. 设备制造商
    2. 品牌
    3. 型号
    4. 董事会
    5. 硬件
    6. 序列号
    7. Android_ID
    8. 屏幕分辨率
    9. 屏幕密度
    10. 引导加载程序
    11. 用户
    12. 主机
    13. API 级别
    14. 构建 ID
    15. 构建时间
    16. 指纹

          DisplayMetrics dm = new DisplayMetrics();
          getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
          double x = Math.pow(mWidthPixels / dm.xdpi, 2);
          double y = Math.pow(mHeightPixels / dm.ydpi, 2);
          screenInches = Math.sqrt(x + y);
          rounded = df2.format(screenInches);
          densityDpi = (int) (dm.density * 160f);
      
      
      
      
      Manufacturer_value = Build.MANUFACTURER;
      Brand_value = Build.BRAND;
      Model_value = Build.MODEL;
      Board_value = Build.BOARD;
      Hardware_value = Build.HARDWARE;
      Serial_nO_value = Build.SERIAL;
      UID_value = tManager.getDeviceId();
      android_id = 
      Settings.Secure.getString(getContext().getContentResolver(), 
      Settings.Secure.ANDROID_ID);
      ScreenResolution_value = mHeightPixels + " * " + mWidthPixels + " Pixels";
      screen_size = rounded + " Inches";
      screen_density = String.valueOf(densityDpi) + " dpi";
      BootLoader_value = Build.BOOTLOADER;
      User_value = Build.USER;
      Host_value = Build.HOST;
      Version = Build.VERSION.RELEASE;
      API_level = Build.VERSION.SDK_INT + "";
      Build_ID = Build.ID;
      Build_Time = Build.TIME + "";
      Fingerprint = Build.FINGERPRINT;
      

    【讨论】:

    • 11. User & 12. Host 是什么意思?
    【解决方案4】:

    您还可以获得实时硬件信息。 Build.* 参数在 Android 编译期间设置,甚至在将其部署到硬件本身之前。

    您可以通过读取 /proc/* "files" 来访问 Linux 实时硬件信息。

    你可以这样做 https://stackoverflow.com/a/3528239/997381

    只需输入命令cat /proc/cpuinfo

    你可以用adb shell测试这个,你不需要root权限。

    【讨论】:

      【解决方案5】:

      也许有人需要 kotlin 解决方案

      class DeviceInfoHelper constructor(val context: Context) {
      
          val model = deviceModel
      
          val imei = context.imei
      
          val hardware: String? = HARDWARE
      
          val board: String? = BOARD
      
          val bootloader: String? = BOOTLOADER
      
          val user: String? = USER
      
          val host: String? = HOST
      
          val version: String? = RELEASE
      
          val apiLevel = SDK_INT
      
          val id: String? = ID
      
          val time = TIME
      
          val fingerPrint: String? = FINGERPRINT
      
          val display: String? = DISPLAY
      
          private val deviceModel
              @SuppressLint("DefaultLocale")
              get() = capitalize(
                      if (MODEL.toLowerCase().startsWith(MANUFACTURER.toLowerCase())) {
                          MODEL
                      } else {
                          "$MANUFACTURER $MODEL"
                      })
      
      
          private fun capitalize(str: String) = str.apply {
              if (isNotEmpty()) {
                  first().run { if (isLowerCase()) toUpperCase() }
              }
          }
      
          private val Context.imei
              @SuppressLint("HardwareIds", "MissingPermission")
              get() = telephonyManager?.run {
                  if (isReadPhoneStatePermissionGranted()) {
                      if (SDK_INT >= VERSION_CODES.O) {
                          imei
                      } else {
                          deviceId
                      }
                  } else DEFAULT_DEVICE_ID
              } ?: DEFAULT_DEVICE_ID
      
          private fun Context.isReadPhoneStatePermissionGranted() =
                  ContextCompat.checkSelfPermission(
                          this,
                          Manifest.permission.READ_PHONE_STATE
                  ) == PackageManager.PERMISSION_GRANTED
      
          private val Context.telephonyManager
              get() = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager?
      }
      

      【讨论】:

        【解决方案6】:

        android.os 中的“Build”类看起来会包含一些您需要的信息

        把它当作

        string build = Build.VERSION.DEVICE;
        

        android Hardware Info

        【讨论】:

        • 您不能将Build.VERSION 分配给字符串。它给出了编译错误。相反,您可以拥有 Build.VERSION._SOMETHING_ (例如 RELEASE )并将其分配给字符串。否则,您可以将 Build._SOMETHING_ (例如 DISPLAY )分配给 String 变量。 Android BuildAndroid Build.VERSION不是吗?
        • Build.VERSION 没有 DEVICE 字段,Build 本身有。不过,Build.DEVICE 提供的 String 仅包含设备本身的名称,而不包含问题询问的任何信息。
        猜你喜欢
        • 2016-09-06
        • 2011-04-25
        • 2021-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-29
        • 2017-01-06
        • 1970-01-01
        相关资源
        最近更新 更多