Android获取系统的硬件信息、系统版本以及如何检测ROM类型

您所在的位置:网站首页 手机查看安卓版本信息怎么查询 Android获取系统的硬件信息、系统版本以及如何检测ROM类型

Android获取系统的硬件信息、系统版本以及如何检测ROM类型

2024-07-08 06:18:37| 来源: 网络整理| 查看: 265

转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52438706 文章出自:薛瑄的博客

你也可以查看我的其他同类文章,也会让你有一定的收货

一、获取手机信息

Android获取手机制作商,系统版本等

获取Android 的Rom信息,以及判断是否为MIUI及获取MIUI版本

在开发中 我们有时候会需要获取当前手机的系统版本来进行判断,或者需要获取一些当前手机的硬件信息。

android.os.Build类中。包括了这样的一些信息。我们可以直接调用 而不需要添加任何的权限和方法。

android.os.Build.BOARD:获取设备基板名称 android.os.Build.BOOTLOADER:获取设备引导程序版本号 android.os.Build.BRAND:获取设备品牌

android.os.Build.CPU_ABI:获取设备指令集名称(CPU的类型)

android.os.Build.CPU_ABI2:获取第二个指令集名称

android.os.Build.DEVICE:获取设备驱动名称 android.os.Build.DISPLAY:获取设备显示的版本包(在系统设置中显示为版本号)和ID一样 android.os.Build.FINGERPRINT:设备的唯一标识。由设备的多个信息拼接合成。

android.os.Build.HARDWARE:设备硬件名称,一般和基板名称一样(BOARD)

android.os.Build.HOST:设备主机地址 android.os.Build.ID:设备版本号。

android.os.Build.MODEL :获取手机的型号 设备名称。

android.os.Build.MANUFACTURER:获取设备制造商

android:os.Build.PRODUCT:整个产品的名称

android:os.Build.RADIO:无线电固件版本号,通常是不可用的 显示unknown android.os.Build.TAGS:设备标签。如release-keys 或测试的 test-keys

android.os.Build.TIME:时间

android.os.Build.TYPE:设备版本类型 主要为”user” 或”eng”.

android.os.Build.USER:设备用户名 基本上都为android-build

android.os.Build.VERSION.RELEASE:获取系统版本字符串。如4.1.2 或2.2 或2.3等

android.os.Build.VERSION.CODENAME:设备当前的系统开发代号,一般使用REL代替 android.os.Build.VERSION.INCREMENTAL:系统源代码控制值,一个数字或者git hash值

android.os.Build.VERSION.SDK:系统的API级别 一般使用下面大的SDK_INT 来查看

android.os.Build.VERSION.SDK_INT:系统的API级别 数字表示

android.os.Build.VERSION_CODES类 中有所有的已公布的Android版本号。全部是Int常亮。可用于与SDK_INT进行比较来判断当前的系统版本

示例代码:

//BOARD 主板 String phoneInfo = "BOARD: " + android.os.Build.BOARD; phoneInfo += ", BOOTLOADER: " + android.os.Build.BOOTLOADER; //BRAND 运营商 phoneInfo += ", BRAND: " + android.os.Build.BRAND; phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI; phoneInfo += ", CPU_ABI2: " + android.os.Build.CPU_ABI2; //DEVICE 驱动 phoneInfo += ", DEVICE: " + android.os.Build.DEVICE; //DISPLAY Rom的名字 例如 Flyme 1.1.2(魅族rom) ;JWR66V(Android nexus系列原生4.3rom) phoneInfo += ", DISPLAY: " + android.os.Build.DISPLAY; //指纹 phoneInfo += ", FINGERPRINT: " + android.os.Build.FINGERPRINT; //HARDWARE 硬件 phoneInfo += ", HARDWARE: " + android.os.Build.HARDWARE; phoneInfo += ", HOST: " + android.os.Build.HOST; phoneInfo += ", ID: " + android.os.Build.ID; //MANUFACTURER 生产厂家 phoneInfo += ", MANUFACTURER: " + android.os.Build.MANUFACTURER; //MODEL 机型 phoneInfo += ", MODEL: " + android.os.Build.MODEL; phoneInfo += ", PRODUCT: " + android.os.Build.PRODUCT; phoneInfo += ", RADIO: " + android.os.Build.RADIO; phoneInfo += ", RADITAGSO: " + android.os.Build.TAGS; phoneInfo += ", TIME: " + android.os.Build.TIME; phoneInfo += ", TYPE: " + android.os.Build.TYPE; phoneInfo += ", USER: " + android.os.Build.USER; //VERSION.RELEASE 固件版本 phoneInfo += ", VERSION.RELEASE: " + android.os.Build.VERSION.RELEASE; phoneInfo += ", VERSION.CODENAME: " + android.os.Build.VERSION.CODENAME; //VERSION.INCREMENTAL 基带版本 phoneInfo += ", VERSION.INCREMENTAL: " + android.os.Build.VERSION.INCREMENTAL; //VERSION.SDK SDK版本 phoneInfo += ", VERSION.SDK: " + android.os.Build.VERSION.SDK; phoneInfo += ", VERSION.SDK_INT: " + Android.os.Build.VERSION.SDK_INT; 二、检测ROM类型

在开发过程中,可能需要判断系统的ROM信息,检测ROM类型是MIUI、EMUI、还是Flyme。但是又不能只根据手机的生产厂家(android.os.Build.MANUFACTURER)来判断,因为要考虑到刷机的用户。比如说华为手机刷了MIUI系统。

2.1、根据系统基本配置文件build.prop检测ROM类型

[Android]判断是否是华为EMUI系统 有没有API 判断Android 系统是MIUI 的,魅族的Flyme ,还是原生的? 如何识别小米设备/MIUI系统

检测ROM类型是MIUI、EMUI、还是Flyme MIUI 的系统属性字段为 ro.miui.ui.version.code 和 ro.miui.ui.version.name根据系统基本配置文件build.prop获取华为的ROM等级,知道了等级就知道是否是华为的ROM了。 // 检测MIUI import java.io.IOException; public final class MIUIUtils { private static final String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code"; private static final String KEY_MIUI_VERSION_NAME = "ro.miui.ui.version.name"; private static final String KEY_MIUI_INTERNAL_STORAGE = "ro.miui.internal.storage"; public static boolean isMIUI() { try { //BuildProperties 是一个工具类,下面会给出代码 final BuildProperties prop = BuildProperties.newInstance(); return prop.getProperty(KEY_MIUI_VERSION_CODE, null) != null || prop.getProperty(KEY_MIUI_VERSION_NAME, null) != null || prop.getProperty(KEY_MIUI_INTERNAL_STORAGE, null) != null; } catch (final IOException e) { return false; } } } //检测EMUI public final class EMUIUtils { private static final String KEY_EMUI_VERSION_CODE = "ro.build.hw_emui_api_level"; public static boolean isEMUI() { try { //BuildProperties 是一个工具类,下面会给出代码 final BuildProperties prop = BuildProperties.newInstance(); return prop.getProperty(KEY_EMUI_VERSION_CODE, null) != null; } catch (final IOException e) { return false; } } } // 检测Flyme import android.os.Build; import java.lang.reflect.Method; public final class FlymeUtils { public static boolean isFlyme() { try { // Invoke Build.hasSmartBar() final Method method = Build.class.getMethod("hasSmartBar"); return method != null; } catch (final Exception e) { return false; } } } //引用到的工具类 import android.os.Environment; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Collection; import java.util.Enumeration; import java.util.Map.Entry; import java.util.Properties; import java.util.Set; public class BuildProperties { private final Properties properties; private BuildProperties() throws IOException { properties = new Properties(); properties.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop"))); } public boolean containsKey(final Object key) { return properties.containsKey(key); } public boolean containsValue(final Object value) { return properties.containsValue(value); } public Set entrySet() { return properties.entrySet(); } public String getProperty(final String name) { return properties.getProperty(name); } public String getProperty(final String name, final String defaultValue) { return properties.getProperty(name, defaultValue); } public boolean isEmpty() { return properties.isEmpty(); } public Enumeration keys() { return properties.keys(); } public Set keySet() { return properties.keySet(); } public int size() { return properties.size(); } public Collection values() { return properties.values(); } public static BuildProperties newInstance() throws IOException { return new BuildProperties(); } } 2.2、代码中执行Android shell命令,检测ROM类型

怎么用代码判断Android手机的Rom是MIUI及获取MIUI版本

在Android shell模式下输入 getprop 就能获取系统属性值

如果Rom是MIUI那么就会有以下字段. [ro.miui.ui.version.code]: [3] [ro.miui.ui.version.name]: [V5]

那么只要用一下代码获取就能知道是不是UI了.

getSystemProperty("ro.miui.ui.version.name") public static String getSystemProperty(String propName){ String line; BufferedReader input = null; try { Process p = Runtime.getRuntime().exec("getprop " + propName); input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024); line = input.readLine(); input.close(); } catch (IOException ex) { Log.e(TAG, "Unable to read sysprop " + propName, ex); return null; } finally { if(input != null) { try { input.close(); } catch (IOException e) { Log.e(TAG, "Exception while closing InputStream", e); } } } return line; }

第二种和第三种方法,理论上可以判断各种ROM的类型,主要就是字段要选择正确,比如MIUI,小米官方有给出,若官方没有给出,就只能自己判断哪个字段可以担此大任。一般系统ROM等级都有一个内部版本号,就是不错的选择。例如:小米ro.miui.ui.version.code,华为ro.build.hw_emui_api_level。

其它参考:

Android手机获取系统rom的定制商

关注我的公众号,轻松了解和学习更多技术 这里写图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭