Android开发获取设备硬件相关信息

安卓获取设备及系统信息小结 安卓开发过程中,免不了要获取一些系统信息,常用的大致就是从 Build、PackageInfo、ApplicationInfo、TelephonyManager 中拿,这里将这些知识做一个小结,具体使用后面再开个辅助类博客介绍吧! 下面看具体内容: Build Build 类可以用来获取Android系统的相关信息。 字段 含义 示例 用法 Build.BRAND 产品品牌 Meizu 通过这个字段可以获取到对用户有意义的手机厂商名称,例如Xiaomi,Meizu,Huawei等。 Bu 阅读详情

在安卓开发过程中,有时需要获取设备硬件信息以及网络信息,包括设备型号、CPU信息、RAM以及ROM信息、摄像头信息、分辨率、运营商信息等。网上逐条搜索相关方法比较繁琐,因此本文总结了相关信息的具体获取方法。本文所有代码能获取的设备信息如下图所示:

首先在manifest.xml添加以下权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

下面开始逐一获取设备相关信息分条目添加至某一FragmentPage中的LinearLayout pwTable中。

通过以下代码获取设备型号:

TextView p_model = new TextView(getActivity());
p_model.setTextColor(Color.BLACK);
p_model.setText("手机型号:" + android.os.Build.MODEL);
pwTable.addView(p_model);

通过以下代码获取手机品牌:

TextView p_brand = new TextView(getActivity());
p_brand.setTextColor(Color.BLACK);
p_brand.setText("手机品牌:" + android.os.Build.BRAND);
pwTable.addView(p_brand);

通过以下代码获取手机制造商,此条目信息通常情况与手机品牌一致:

TextView p_company = new TextView(getActivity());
p_company.setTextColor(Color.BLACK);
p_company.setText("制造商:" + android.os.Build.MANUFACTURER);
pwTable.addView(p_company);

通过以下代码获取安卓版本信息:

TextView p_and = new TextView(getActivity());
p_and.setTextColor(Color.BLACK);
p_and.setText("Android版本号:" + android.os.Build.VERSION.RELEASE);
pwTable.addView(p_and);

通过以下代码获取CPU型号信息:

TextView p_cpuname = new TextView(getActivity());
p_cpuname.setTextColor(Color.BLACK);
p_cpuname.setText("CPU型号:" + android.os.Build.HARDWARE);
pwTable.addView(p_cpuname);

通过以下代码获取CPU架构信息:

TextView p_cputype = new TextView(getActivity());
p_cputype.setTextColor(Color.BLACK);
p_cputype.setText("CPU架构:" + android.os.Build.CPU_ABI);
pwTable.addView(p_cputype);

通过以下代码获取CPU核心数信息:

int cores;
try{
	cores = new File("/sys/devices/system/cpu/").listFiles(CPU_FILTER).length;
} catch(SecurityException e){
	cores = 0;
} catch(NullPointerException e){
	cores = 0;
}
TextView p_cpucore = new TextView(getActivity());
p_cpucore.setTextColor(Color.BLACK);
p_cpucore.setText("CPU核心数:" + cores);
pwTable.addView(p_cpucore);

通过以下代码获取CPU最高频率信息:

int maxRate1 = 0;
double temp;
String maxRate = "0";
try {
	FileReader fr1 = new FileReader("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq");
	BufferedReader br1 = new BufferedReader(fr1);
	String text1 = br1.readLine();
	maxRate1 = Integer.parseInt(text1);
	temp = maxRate1 / 1000.0;
	maxRate = String.format("%.1f", temp);
	br1.close();
} catch (IOException e) {
	// TODO 自动生成的 catch 块
}
TextView p_cpurate = new TextView(getActivity());
p_cpurate.setTextColor(Color.BLACK);
p_cpurate.setText("CPU最高频率:" + maxRate + "MHz");
pwTable.addView(p_cpurate);

通过以下代码获取CPU最低频率信息:

int minRate1 = 0;
String minRate = "0";
try {
	FileReader fr2 = new FileReader("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq");
	BufferedReader br2 = new BufferedReader(fr2);
	String text2 = br2.readLine();
	minRate1 = Integer.parseInt(text2);
	temp = minRate1 / 1000.0;
	minRate = String.format("%.1f", temp);
	br2.close();
} catch (IOException e) {
	// TODO 自动生成的 catch 块
}
TextView p_cpurate2 = new TextView(getActivity());
p_cpurate2.setTextColor(Color.BLACK);
p_cpurate2.setText("CPU最低频率:" + minRate + "MHz");
pwTable.addView(p_cpurate2);

通过以下代码获取CPU温度:

String text4 = "0";
try {
	FileReader fr4 = new FileReader("/sys/class/thermal/thermal_zone9/subsystem/thermal_zone9/temp");
	BufferedReader br4 = new BufferedReader(fr4);
	text4 = br4.readLine();
	br4.close();
} catch (IOException e) {
	// TODO 自动生成的 catch 块
}
TextView p_temp = new TextView(getActivity());
p_temp.setTextColor(Color.BLACK);
p_temp.setText("CPU温度:" + text4 + "℃");
pwTable.addView(p_temp);

通过以下代码获取RAM大小信息:

int memorySize = 0;
String ramSize = "0";
try {
	FileReader fr3 = new FileReader("/proc/meminfo");
	BufferedReader br3 = new BufferedReader(fr3);
	String memoryLine = br3.readLine();
	String subMemoryLine = memoryLine.substring(memoryLine.indexOf("MemTotal:"));
	memorySize = Integer.parseInt(subMemoryLine.replaceAll("\\D+", ""));
	temp = memorySize / 1000000.0;
	ramSize = String.format("%.1f", temp);
	br3.close();
} catch (IOException e) {
	// TODO 自动生成的 catch 块
}
TextView p_ram = new TextView(getActivity());
p_ram.setTextColor(Color.BLACK);
p_ram.setText("RAM大小:" + ramSize + "GB");
pwTable.addView(p_ram);

通过以下代码获取ROM大小信息:

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
long romSize1 = blockSize * totalBlocks;
temp = romSize1 / 1000000000.0;
String romSize = String.format("%.1f", temp);
TextView p_rom = new TextView(getActivity());
p_rom.setTextColor(Color.BLACK);
p_rom.setText("ROM大小:" + romSize + "GB");
pwTable.addView(p_rom);

通过以下代码获取电池容量信息:

PowerProfile pp = new PowerProfile(getActivity());
int batteryRate = (int) pp.getBatteryCapacity();
TextView p_batteryrate = new TextView(getActivity());
p_batteryrate.setTextColor(Color.BLACK);
p_batteryrate.setText("电池容量:" + batteryRate + "mAh");
pwTable.addView(p_batteryrate);

通过以下代码获取前置摄像头像素信息:

TextView p_front = new TextView(getActivity());
p_front.setTextColor(Color.BLACK);
p_front.setText("前置摄像头像素:" + CameraUtils.getCameraPixels(CameraUtils.HasFrontCamera()));
pwTable.addView(p_front);

通过以下代码获取后置摄像头像素信息: 

TextView p_back = new TextView(getActivity());
p_back.setTextColor(Color.BLACK);
p_back.setText("后置摄像头像素:" + CameraUtils.getCameraPixels(CameraUtils.HasBackCamera()));
pwTable.addView(p_back);

通过以下代码获取屏幕分辨率信息(有虚拟按键时会有误差):

WindowManager windowManager = getActivity().getWindowManager();    
Display display = windowManager.getDefaultDisplay();    
int screenWidth = screenWidth = display.getWidth();    
int screenHeight = screenHeight = display.getHeight();
TextView p_screen = new TextView(getActivity());
p_screen.setTextColor(Color.BLACK);
p_screen.setText("屏幕分辨率:" + screenHeight + "×" + screenWidth);
pwTable.addView(p_screen);

通过以下代码获取本机号码信息(双卡手机此方法只能获取卡1号码):

TextView p_num = new TextView(getActivity());
p_num.setTextColor(Color.BLACK);
p_num.setText("本机号码:" + num);
pwTable.addView(p_num);

通过以下代码获取运营商名称(同样此方法只能获取卡1运营商):

TextView p_nm = new TextView(getActivity());
p_nm.setTextColor(Color.BLACK);
p_nm.setText("运营商名称:" + nm);
pwTable.addView(p_nm);

通过以下代码获取IMEI码(同样获取的是卡1的IMEI码):

TextView p_imei = new TextView(getActivity());
p_imei.setTextColor(Color.BLACK);
p_imei.setText("IMEI码:" + imei);
pwTable.addView(p_imei);
通过以下代码获取手机MAC地址:

WifiManager wifiMng = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfor = wifiMng.getConnectionInfo();
TextView p_mac = new TextView(getActivity());
p_mac.setTextColor(Color.BLACK);
p_mac.setText("MAC地址:" + wifiInfor.getMacAddress());
pwTable.addView(p_mac);
具体实际应用请见我的GitHub: https://github.com/HirojiSawatari/Sysmonitor/blob/master/src/hg/crx/sysmonitor/FragmentPage2.java




Android设备获取OAID调研和实现 Android获取oaid 阅读详情

相关推荐

安卓蓝牙BLE设备开发

前段时间做了一个有关于安卓蓝牙BLE设备的开发项目,主要的功能包括了搜索蓝牙ble设备和ble设备的数据读写等等,本篇博客用于记录安卓蓝牙ble设备的通信的细节。  其实关于BLE设备的通信在API中已经讲地比较清楚了,这里只是做一个总结,如果要进行BLE设备的开发,首先可以阅读API. BLE有关APIBLE设备的定义和特点 BLE-维基百科  对于BLE设备的定义,我们只需要看维基百科的说

maowei117的博客 2691

Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

weixin_42602900的博客 6522

Android常用命令汇总 (二)

无论是软中断还是硬中断,它们的中断处理程序都可能会耗费大量的 CPU。使用 nice 调整进程的优先级,正值调低优先级,负值调高优先级。适当降低非核心应用的优先级,增高核心应用的优先级,可以确保核心应用得到优先处理。SCHED_NORMAL: 普通调度类,目前常用的是 CFS(Complete Fair Scheduler)调度器。使用 Linux cgroups 来设置进程的 CPU 使用上限,可以防止由于某个应用自身的问题,而耗尽系统资源。

Red风信子的博客 163

Android--史上最全、最完整,获取设备信息、获取手机唯一标识

史上最详细、最完整、获取Android设备详细信息。

人生在世 4万+

Android手机硬件信息检索实战教程

在这个信息快速发展的时代,Android系统作为全球最流行的移动操作系统之一,对硬件信息的获取和使用显得尤为重要。本文将带你深入了解如何在Android系统中获取硬件信息,包括但不限于制造商、CPU架构、设备型号、系统版本等,这些信息在应用开发、设备管理和安全保护中都有广泛的应用。硬件信息的获取不仅涉及到基本的系统属性,更关系到用户体验和应用的兼容性。例如,在开发一款游戏应用时,获取硬件信息可以帮助开发者对不同设备的性能进行适配,确保游戏在各种设备上都能流畅运行;

weixin_36204513的博客 1132

Android获取设备信息如:AndroidID、唯一设备ID、制造商、型号、版本号、版本码等

第一步:依赖aar包;第二部实例化调用:DeviceUtils deviceUtils=new DeviceUtils(this); "获取制造商:"+ deviceUtils.getManufacturer()+"\n" +"获取AndroidID:"+deviceUtils.getAndroidID()+"\n" +"获取型号:"+deviceUtils.getModel()+"\n" +"获取唯一ID:"+deviceUtils.getUniqueDeviceId()+"\n"+"获取系统版本号:"+ deviceUtils.getSDKVersionName()+"\n"+"获取系统版本码:"+deviceUtils.getSDKVersionCode()+"\n"+"获取AppVersionCode:"+deviceUtils.getVersionCode()+"\n"++"获取AppVersionName:"+deviceUtils.getVerName()

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

Android获取手机制作商,系统版本等    获取Android 的Rom信息,以及判断是否为MIUI及获取MIUI版本    在开发中 我们有时候会需要获取当前手机的系统版本来进行判断,或者需要获取一些当前手机的硬件信息。    android.os.Build类中。包括了这样的一些信息。我们可以直接调用 而不需要添加任何的权限和方法。    android.os.Build.BOARD:获...

1708

获取Android设备常见硬件信息

包括CPU,内存,RAM,ROM,摄像头等等

Android系统芯片相关硬件ID信息查询方法

Android系统芯片相关硬件ID信息 /sys/comip目录下存放这几个芯片ID相关的文件,通过cat他们的内容可以获取芯片的相关信息 /sys/comip/bb_id /sys/comip /board_info /sys/comip/chip_id /sys/comip/gsm2_voltage /sys/comip/gsm_voltage /sys/comip/net_mode_sel /sys/comip/rom_id /sys/comip/rtc_alarm /sys/c.

hunter168_wang的专栏 2638

URDF模型转换实战:解决SolidWorks到Gazebo的五大常见问题

本文详细解析了从SolidWorks导出URDF模型到Gazebo仿真过程中常见的五大问题及解决方案,包括插件安装、坐标系建立、Link与Joint配置等关键步骤。通过实战经验分享,帮助机器人仿真工程师高效完成模型转换,确保Gazebo仿真准确性。

weixin_29052717的博客 443

DESeq2差异分析结果不会看?用这个R脚本5分钟生成发表级火山图和热图

本文详细介绍了如何使用R语言快速可视化DESeq2差异分析结果,5分钟内生成可直接用于论文发表的火山图和热图。通过解析DESeq2数据结构、展示ggplot2和EnhancedVolcano包的绘图技巧,以及pheatmap包的热图定制方法,帮助研究者高效呈现差异表达基因分析结果。

weixin_30326515的博客 340

Android 获得设备状态信息、Mac地址、IP地址

前言在APP开发时,经常会遇到要获取手机状态信息的场景,像升级时获取版本号,像发生异常时要收集手机信息等等。有些软件还要根据Mac地址来判定当前用户以前是否登录过。下面将为一一介绍获取这些手机状态信息的方法。1 通过build获取手机硬件信息 运用反射获取Build信息,然后从build中得到对应字段的值。这种情况适用于获取所有的build信息。 或者直接调用Build类直接拿里面的字段名,如:an

pigdreams的博客 2万+

【回归预测】GRNN广义回归神经网络-MATLAB

广义回归神经网络(GRNN)是一种基于径向基函数(RBF)的神经网络模型,主要用于非线性回归任务。与传统的回归分析方法相比,GRNN具有更强的非线性映射能力和学习速度,能够快速逼近复杂的非线性关系。输入层、模式层、求和层和输出层。输入层接收输入数据,模式层通过径向基函数将输入映射到高维空间,求和层对模式层的输出进行加权求和,最后输出层生成预测结果。GRNN的核心思想是利用高斯核函数计算输入与训练样本之间的相似度,然后根据相似度加权平均得到预测值。

2303_77200324的博客 1091

安卓获取渠道名渠道id Android获取设备唯一标识的终极解决方法,防止安卓7(1)

【代码】安卓获取渠道名渠道id Android获取设备唯一标识的终极解决方法,防止安卓7(1)

2401_84123077的博客 847

Palantir解密:“本体”的建模逻辑及其扩展方向

上一篇重点从对现实世界建模的角度探讨了“本体”在数字化架构中的核心意义。这里借Palantir的“本体”概念、解析Palantir只是起点,目标旨在以他山之石攻玉——探索数字世界的底层架构逻辑,最终为构建自主体系提供思考。Palantir以“本体论”为核心的建模方案是否代表终极答案,不宜过早下结论,但其思路值得深入剖析。

SZSDQJC的博客 2634

荣耀Magic 6 dToF LiDAR Android阵营全球第一首发

40X30分辨率的BSI SPAD小面阵,帧率达到60帧,搭配多传感器融合算法, 可产生足够的稠密点云,为应用设备提供可靠的距离传感。在手机消费电子方案中,dToF LiDAR技术不仅提升了手机的功能和用户体验,还为手机厂商提供了差异化的竞争优势。随着技术的不断进步和市场的快速发展,我们可以期待未来dToF LiDAR技术将在手机领域发挥更大的作用,为用户带来更多创新和便捷的功能。增强现实(AR)体验:通过dToF LiDAR提供的高精度深度信息,手机可以更准确地放置虚拟物体在现实世界的表面上。

致力于lidar应用开发 19万+

(转)Android Build及相关类

原地址:http://blog.youkuaiyun.com/vennl/article/details/7078738 Build :Information about the current build, extracted from system properties. 官方文档有以下属性: [java] view plain copy B

Elvis写代码 282

基于学术研究风云卫星数据下载教程

目录 一、相关网址 1.登录注册网址:国家卫星气象中心 2.风云数据服务客户端下载网址 3.风云卫星遥感数据服务网址 二、下载数据步骤 1.首先在注册登录网址,注册一个账户 2.待账户审核后,登录账户即可搜索并下载数据 三、相关工具下载 1.登录风云卫星遥感数据服务网址 2.NCSA HDFView软件 3.风云卫星数据(L1)处理软件包(FENGYUN Toolkit v1.1) 4.静止卫星云图分区图显示软件(SECView) 5.风云二号静止气象卫星数据及产品处理..

珞瑜的博客 1万+

Android获取硬件设备详细信息

此文介绍一些获取Android手机硬件信息的方法 主要是从Build和TelephonyManager中获取 以及使用反射获取SystemProperties 并使用他的get方法获取一些系统隐藏掉的API 以及某些ROM独有的数据 比如OPPO手机自己定制的osVersion ColorOS版本 OPPO手机ROM特有 分别获取了以下内容 1. 列表内容 名称 接口参数名称 备注 示例 序列号 getDeviceId 序列号IMEI 865872025238821 andrlid_id

博客简介 3571

面试提问:数据开发中如何通过指标拆解来指导SQL编写?(附拆解模板)

摘要:指标拆解是一种高效的数据分析方法,通过将复杂业务指标分解为可执行的原子指标,指导SQL查询的编写。核心步骤包括:明确指标定义、拆解原子指标、定位数据源、确定分组维度、构建中间表。文章提供了指标拆解模板和实际案例(如用户留存率计算),并总结了拆解带来的5大好处:逻辑清晰、易于调试、可复用、降低错误率、便于协作。最后强调"一定义、二拆解、三定位、四分步、五合并"的口诀,适用于数仓开发、BI报表等场景。

石榴姐yyds 266

一种基于机载LiDAR点云电力线自动提取方法

文章目录一、引言二、算法实现2.1实现步骤2.2实现代码 一、引言 二、算法实现 2.1实现步骤 (1)首先采用首先采用高程滤波方法去除地面点和低矮地物点,滤波后的点云数据中除电力线点云外还含部分杆塔点、高植被点和噪声点。 (2)根据点云空间维度特征提取电力线点,使用空间密度聚类的方法实现单根电力线精确分离。 2.2实现代码 在这里插入代码片 ...

dayuhaitang1的博客 5170

获取安卓设备唯一标识方法总结

安卓设备的唯一标识的方法并不唯一,也没有哪种方法能够适用于所有的Android设备,下面列出几种常见的方式,可以根据需要选择。 1.IMEI 码 IMEI(国际移动设备识别码)唯一编号,用于识别 GSM,WCDMA手机以及一些卫星电话(移动设备识别码)全球唯一编号,用于识别CDMA移动电台设备的物理硬件,MEID出现的目的是取代ESN号段(电子序列号)(电子序列号)唯一编号,用于识别CDM...

Sindyue的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

整理一些Android相关硬件信息的获取方式

最近需要做个项目,里面涉及到一些收集Android硬件信息,虽说项目还没开始,但也不影响自己先事先准备起来.

weixin_42687841的博客 1405

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

5分钟掌握ADB设备信息获取:硬件与系统详情全解析

你还在为获取Android设备信息而频繁操作手机界面?还在为不同品牌机型的设置路径差异而烦恼?本文将通过ADB(Android Debug Bridge,安卓调试桥)命令,教你一站式获取设备型号、硬件配置、系统参数等关键信息,无需触碰设备即可完成所有查询。 ## 关于ADB ADB是Android开发/测试人员不可替代的强大工具,也是Android设备玩家的好玩具。完整的ADB使用指南可参考项...

gitblog_00169的博客 6552

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android获取硬件设备信息

此文介绍一些获取Android手机硬件信息的方法 主要是从Build和TelephonyManager中获取 以及使用反射获取SystemProperties 并使用他的get方法获取一些系统隐藏掉的API 以及某些ROM独有的数据 比如OPPO手机自己定制的osVersion ColorOS版本 OPPO手机ROM特有分别获取了以下内容 列表内容 名称 接口参数名称 备注 示例

世界美景的博客 4万+

Delphi安卓APP获取手机信息:助力开发者轻松掌握手机硬件数据

Delphi安卓APP获取手机信息:助力开发者轻松掌握手机硬件数据 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代移动应用开发中,获取手机的硬件信息及手机号是一种常见需求。Delphi安卓APP获取手机信息项目应运而生,为开发者提供了使用Delphi D10.X开发安卓APP时,快速获取硬件信息及手机号的解决方案。本项目包含完整代码,支持安卓5.1至10版本,并...

gitblog_06799的博客 454
下一篇: Scrapy爬虫+Tkinter爬取天猫热门商品(一)
Ka Tou
博客等级 码龄14年 6粉丝 4原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值