android系统信息(内存、cpu、sd卡、电量、版本)获取

VS2017的C++开发心得(四)VS的文件夹路径以及项目生成步骤 这篇先来理一理VS的文件夹路径,以及几个关键的路径宏。 先看看解决方案根目录: 这个结构很简单,解决方案下一个项目对应一个文件夹,一配置对应一个生成文件夹。 项目文件夹:存放项目的代码、项目配置文件以及项目的中间编译结果,如下: 打开Debug文件夹,看看项目生成的时候产生了哪些东西: 这里要先简单介绍下VS的项目生成步骤。VS的项目生成大致分成四步:分析、编译、链接、生成。... 阅读详情

出处:http://gqdy365.iteye.com/blog/1066113

一、内存(ram): 

android的总内存大小信息存放在系统的/proc/meminfo文件里面,可以通过读取这个文件来获取这些信息: 

public void getTotalMemory() {
		String str1 = "/proc/meminfo";
		String str2="";
		try {
			FileReader fr = new FileReader(str1);
			BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
			while ((str2 = localBufferedReader.readLine()) != null) {
				Log.i(TAG, "---" + str2);
			}
		} catch (IOException e) {
		}
	}

运行信息如下: 

05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---MemTotal:       204876 kB
05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---MemFree:          4596 kB
05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Buffers:         16020 kB
05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Cached:          82508 kB
05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---SwapCached:         64 kB
05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Active:         137104 kB
05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Inactive:        41056 kB
05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---SwapTotal:       65528 kB
05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---SwapFree:        65368 kB
05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Dirty:              88 kB
05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Writeback:           0 kB
05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---AnonPages:       79672 kB
05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Mapped:          38296 kB
05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Slab:             5768 kB
05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---SReclaimable:     1856 kB
05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---SUnreclaim:       3912 kB
05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---PageTables:       8184 kB
05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---NFS_Unstable:        0 kB
05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---Bounce:              0 kB
05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---CommitLimit:    167964 kB
05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---Committed_AS: 11771920 kB
05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocTotal:   761856 kB
05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocUsed:     83656 kB
05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocChunk:   674820 kB

第一行是总内存大小(即用户可以使用的ram的大小)!其他各项的介绍大家可以看这儿: 

http://bg135.com/android-phones-to-get-the-total-memory-and-available-memory.html 

获取当前剩余内存(ram)大小的方法: 

public long getAvailMemory() {
		ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
		ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
		am.getMemoryInfo(mi);
		return mi.availMem;
	}

二、Rom大小 

public long[] getRomMemroy() {
		long[] romInfo = new long[2];
		//Total rom memory
		romInfo[0] = getTotalInternalMemorySize();

		//Available rom memory
		File path = Environment.getDataDirectory();
		StatFs stat = new StatFs(path.getPath());
		long blockSize = stat.getBlockSize();
		long availableBlocks = stat.getAvailableBlocks();
		romInfo[1] = blockSize * availableBlocks;
		getVersion();
		return romInfo;
	}

	public long getTotalInternalMemorySize() {
		File path = Environment.getDataDirectory();
		StatFs stat = new StatFs(path.getPath());
		long blockSize = stat.getBlockSize();
		long totalBlocks = stat.getBlockCount();
		return totalBlocks * blockSize;
	}

注意类型,不然相乘之后会有溢出。可用内部存储的大小不能通过getRootDirectory(); 

取得,之前网上传的很多都是用getRootDirectory()取得的,我测试之后发现取得的数值不对。要根据getDataDirectory(); 
取得。 

三、sdCard大小 

public long[] getSDCardMemory() {
		long[] sdCardInfo=new long[2];
		String state = Environment.getExternalStorageState();
		if (Environment.MEDIA_MOUNTED.equals(state)) {
			File sdcardDir = Environment.getExternalStorageDirectory();
			StatFs sf = new StatFs(sdcardDir.getPath());
			long bSize = sf.getBlockSize();
			long bCount = sf.getBlockCount();
			long availBlocks = sf.getAvailableBlocks();

			sdCardInfo[0] = bSize * bCount;//总大小
			sdCardInfo[1] = bSize * availBlocks;//可用大小
		}
		return sdCardInfo;
	}

注意类型,不然相乘之后会有溢出。 


四、电池电量 

private BroadcastReceiver batteryReceiver=new BroadcastReceiver(){
		@Override
		public void onReceive(Context context, Intent intent) {
			int level = intent.getIntExtra("level", 0);
			//	level加%就是当前电量了
	}
	}

然后在activity的oncreate()方法中注册 

registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

五、CPU信息 

public String[] getCpuInfo() {
		String str1 = "/proc/cpuinfo";
		String str2="";
		String[] cpuInfo={"",""};
		String[] arrayOfString;
		try {
			FileReader fr = new FileReader(str1);
			BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
			str2 = localBufferedReader.readLine();
			arrayOfString = str2.split("\\s+");
			for (int i = 2; i < arrayOfString.length; i++) {
				cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " ";
			}
			str2 = localBufferedReader.readLine();
			arrayOfString = str2.split("\\s+");
			cpuInfo[1] += arrayOfString[2];
			localBufferedReader.close();
		} catch (IOException e) {
		}
		return cpuInfo;
	}
/proc/cpuinfo文件中第一行是CPU的型号,第二行是CPU的频率,可以通过读文件,读取这些数据! 

六、系统的版本信息: 

public String[] getVersion(){
		String[] version={"null","null","null","null"};
		String str1 = "/proc/version";
		String str2;
		String[] arrayOfString;
		try {
			FileReader localFileReader = new FileReader(str1);
			BufferedReader localBufferedReader = new BufferedReader(
					localFileReader, 8192);
			str2 = localBufferedReader.readLine();
			arrayOfString = str2.split("\\s+");
			version[0]=arrayOfString[2];//KernelVersion
			localBufferedReader.close();
		} catch (IOException e) {
		}
		version[1] = Build.VERSION.RELEASE;// firmware version
		version[2]=Build.MODEL;//model
		version[3]=Build.DISPLAY;//system version
		return version;
	}
版本信息里面还包括型号等信息。 

七、MAC地址和开机时间: 

public String[] getOtherInfo(){
		String[] other={"null","null"};
        WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
        if(wifiInfo.getMacAddress()!=null){
        	other[0]=wifiInfo.getMacAddress();
		} else {
			other[0] = "Fail";
		}
		other[1] = getTimes();
        return other;
	}
	private String getTimes() {
		long ut = SystemClock.elapsedRealtime() / 1000;
		if (ut == 0) {
			ut = 1;
		}
		int m = (int) ((ut / 60) % 60);
		int h = (int) ((ut / 3600));
		return h + " " + mContext.getString(R.string.info_times_hour) + m + " "
				+ mContext.getString(R.string.info_times_minute);
	}

最后贴一个格式化数据的方法: 

public String formatSize(long size) {
		String suffix = null;
		float fSize=0;

		if (size >= 1024) {
			suffix = "KB";
			fSize=size / 1024;
			if (fSize >= 1024) {
				suffix = "MB";
				fSize /= 1024;
			}
			if (fSize >= 1024) {
				suffix = "GB";
				fSize /= 1024;
			}
		} else {
			fSize = size;
		}
		java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
		StringBuilder resultBuffer = new StringBuilder(df.format(fSize));
		if (suffix != null)
			resultBuffer.append(suffix);
		return resultBuffer.toString();
	}
保留两位小数。
vs2017配置opencv详细教程 vs上配置opencv的详细步骤。 阅读详情

相关推荐

OpenCV安装、QT、VS配置项目设置

opencv、QT、VS2019的配置

qq_20467929的博客 902

获取android手机CPU\内存\屏幕密度等硬件信息

AppInfoManager.java获取软件信息和内存信息,其它的信息获取在InfoActivity.java

Dev-C++ 深度解析:从安装配置到实战调试的完整指南

集成开发环境(IDE)是程序员将代码转化为可执行程序的核心工具,其核心原理在于整合编辑器、编译器、调试器等组件,提供一体化的开发体验。对于C/C++语言学习而言,一个轻量、易配置的IDE能有效降低入门门槛,让初学者聚焦于语法和算法逻辑本身。Dev-C++正是这样一款经典的轻量级IDE,它集成了MinGW GCC编译器与GDB调试器,遵循“小、快、省”的设计哲学,在教育、竞赛及快速验证等场景中展现出独特的技术价值。本文以Dev-C++为例,详细拆解其架构、安装流程、编译配置及调试技巧,并针对初学者常见问题提供

leonard61306500的专栏 577

android系统信息(内存、cpu、sd卡、电量、版本,型号、厂商、系统语言等)获取

一、内存(ram): android的总内存大小信息存放在系统的/proc/meminfo文件里面,可以通过读取这个文件来获取这些信息: publicvoidgetTotalMemory(){ Stringstr1="/proc/meminfo"; Stringstr2=""; try{ ...

lizhong 4147

Visual Studio C++开发环境深度配置指南:从安装到高效调试

C++作为一门贴近系统底层的编程语言,其开发环境的配置直接影响着项目的构建效率和运行稳定性。理解编译与链接的基本原理,是解决复杂工程问题的关键。在Windows平台上,Visual Studio作为主流的集成开发环境,其强大的项目管理和调试工具为C++开发提供了重要价值。通过合理配置编译器选项、链接器设置以及运行时库,开发者可以构建出高性能、可维护的应用程序,广泛应用于桌面软件、游戏引擎及系统工具等场景。本文聚焦于Visual Studio C++环境中的**项目属性配置**与**运行时库冲突**等核心问题

weixin_34161064的博客 361

EXE文件打包与加密全攻略:从Python到C++的跨平台保护方案

在软件分发过程中,打包与加密是保障程序可移植性和安全性的核心技术。打包技术通过将代码、解释器和依赖库整合为独立可执行文件,解决了运行环境缺失和依赖冲突问题,实现了跨平台部署。其原理在于创建自包含的应用程序环境,确保用户无需配置即可直接运行。代码混淆和加壳技术则在此基础上,通过重命名变量、压缩代码结构以及动态解密执行,大幅增加逆向工程难度,保护核心算法和商业逻辑。这些技术广泛应用于商业软件、内部工具和桌面应用开发中,尤其在Python的PyInstaller打包、PyArmor加密以及C++的Qt应用保护等场

weixin_33924312的博客 385

Android自动化测试-自动获取cpu和内存信息

CpuInfo.java package com.dtest; import java.io.BufferedReader; import java.io.FileWriter; import java.io.InputStreamReader; class CpuInfo{ public static String getcpu(String packa...

monkey_怡宝的博客 714

VS Code 与 Keil 组合:嵌入式开发编译下载体验升级指南

在嵌入式开发中,开发者常面临工具链割裂的痛点:Keil MDK 编译下载稳定,但代码编辑体验老旧,影响开发效率。通过合理分工,让 VS Code 负责代码编辑、智能提示与工程浏览,Keil 的 UV4.exe 命令行后台处理编译与烧录,可实现两全其美。这一方案在不改动原有 .uvprojx 工程结构的前提下,复用 Keil 的构建依赖管理与 Flash 下载算法,同时借助 VS Code 的插件生态提升代码阅读和调试体验。本文从工具链原理出发,详细拆解 c_cpp_properties.json 配置、ta

weixin_34323858的博客 319

android系统cpu/内存信息提取设计

主要设计思想 将安卓设备通过shell脚本,输入指定进程,将cpu/内存信息提取到文件里,方便通过python或其他工具制作成曲线图。 前提 设备有执行top procrank busybox等指令的权限,最好就是root化的 脚本输入设计 参数1:指定多个进程名,用逗号分开 参数2:记录输出文件,设备中的可写路径 参数3:数据采集间隔时间,这个时间不是精确的时间,毕竟执行procrank 等命令也会消耗时间的。 #!/system/bin/sh if [ $# -eq 0 ];then

ngRoom 722

VS2019调试必备:如何让Release模式下的程序乖乖输出到控制台(附Editbin用法详解)

本文深入解析了在Visual Studio 2019的Release模式下程序无法输出到控制台的根本原因,即Windows可执行文件的子系统设置。核心解决方案是使用微软官方后链接工具editbin,通过修改可执行文件的子系统为CONSOLE,并集成到VS2019的后期生成事件中,实现自动化处理。文章还详细探讨了编译器优化陷阱的应对策略及高级调试技巧,帮助开发者确保关键日志在发布版本中稳定可见。

weixin_28828243的博客 228

Halcon C++环境配置全解析:从VS项目搭建到Qt集成实战

在机器视觉与工业自动化领域,C++环境配置是算法工程化的关键基础环节,直接影响项目的可维护性与部署效率。其核心原理在于正确处理编译器、库文件与运行时依赖之间的版本对齐与路径关联,确保开发环境与生产环境的一致性。对于Halcon这类商业视觉库,C++接口配置涉及包含目录、库链接、预处理器定义及许可证管理的多维度耦合,技术价值在于为复杂视觉应用提供稳定高效的底层支持。本文聚焦Halcon C++环境配置的常见痛点,通过详解Visual Studio属性表配置、运行时依赖处理及与Qt框架的集成方案,帮助开发者快速

weixin_30487201的博客 722

如何获取 Android 设备的CPU核数、时钟频率以及内存大小

原帖: [url]http://www.jianshu.com/p/f7add443cd32[/url] Device Year Class 的主要功能是根据 CPU核数、时钟频率 以及 内存大小 对设备进行分级。 下表是 Facebook 公司提供的分级标准,其中 Year 栏表示分级结果。 [img]http://dl2.iteye.com/upload/attachment/...

gundumw100的专栏 333

Visual C++ 2010完整安装与配置指南:解决遗留项目编译难题

C++作为经典的编程语言,其开发环境与工具链的配置是项目成功编译和运行的基础。在Windows平台,Visual Studio系列IDE通过集成编译器、调试器和项目管理工具,为C++开发提供了强大支持。不同版本的Visual C++编译器对应特定的运行时库(如msvcr100.dll),这确保了二进制兼容性,但也带来了环境依赖的挑战。对于维护遗留代码、编译经典开源库或完成高校实验,特定版本的开发环境往往是必须的。Visual C++ 2010便是这样一个关键版本,它绑定着大量历史项目。本文聚焦于该版本开发环

weixin_30430169的博客 559

Dev C++ 初学者入门指南:从安装配置到高效编程调试

集成开发环境(IDE)是程序员编写、编译和调试代码的核心工具,其设计理念直接影响开发效率和学习曲线。对于C/C++初学者而言,理解编译器工作原理和项目管理是入门关键。Dev C++作为一个轻量级、开箱即用的IDE,通过集成GCC编译器,为新手提供了免配置的编程环境,极大降低了学习门槛。其价值在于让学习者能快速聚焦于语法和算法逻辑,而非复杂的环境搭建。在高校教学和个人练习场景中,这种简单直接的特性使其成为理想的起点工具。本文围绕Dev C++的安装、汉化、项目管理和调试等核心功能展开,特别针对编译错误排查和第

weixin_34187862的博客 468

llama.cpp本地部署实战:GGUF格式与CUDA加速配置指南

大模型本地推理正从概念走向日常,其核心依赖于轻量、跨平台、可嵌入的模型格式与高效推理引擎。GGUF作为专为本地部署设计的二进制模型容器,统一了量化、元数据与tokenizer配置,使Q4_K_M等标准化量化模型能在CPU上稳定运行;而llama.cpp则以纯C实现、SIMD优化和零Python依赖,成为Windows/macOS/Linux下最可靠的CPU推理基座。当性能需求提升,CUDA并非全栈加速,而是通过分层卸载(--n-gpu-layers)在PCIe带宽与GPU算力间动态协同,其效果直接受显存容量

weixin_33670713的博客 548

VS2022集成PyInstaller:Python项目打包成EXE的完整实战指南

Python打包是将脚本转换为独立可执行文件的关键技术,其核心原理是通过依赖分析将解释器、库文件与应用代码‘冻结’为可分发的程序。这项技术的工程价值在于解决了Python应用部署的环境依赖难题,使最终用户无需安装Python环境即可运行应用,极大地简化了软件分发流程。在桌面应用、数据分析工具及混合语言项目等场景中,打包技术尤为重要。本文聚焦于在Visual Studio 2022这一集成开发环境中,利用PyInstaller这一强大工具,实现从环境配置、依赖管理到最终生成exe的完整工作流,并深入探讨了处理

weixin_33898876的博客 377

OpenClaw:Windows 11专用AI运行时,解压即用零配置

AI智能体运行时是一种轻量级本地化AI执行环境,其核心原理是将模型推理、工具调用与状态管理封装为自包含进程单元,绕过传统依赖管理和系统级安装。相比Docker容器或Python全局环境,它通过便携式Python运行时、预编译CUDA依赖和进程级隔离实现更高确定性与更低资源开销,技术价值在于大幅降低非开发人员的AI使用门槛。典型应用场景包括科研PDF分析、金融合同处理、教育PPT生成等本地化任务。OpenClaw正是面向Windows 11深度优化的代表实现,依托WSL2支持、WDAC策略兼容与SmartSc

weixin_30617695的博客 601

AquaCrop-OSPy学习笔记02:模型输入设置

AquaCrop-OSPy的输入设置

EWBA_GIS_RS_ER的博客 3693
上一篇: Android CoverFlow
下一篇: 如何避免ConcurrentModificationException 异常
nevercool
博客等级 码龄20年 4粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值