内存(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的大小)!

获取当前剩余内存(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);
}

我是天王盖地虎的分割线                                                               

参考:http://gqdy365.iteye.com/blog/1066113

Android -- 系统信息(内存、cpu、sd卡、电量、版本)获取的更多相关文章

  1. Android设备内存和SD卡操作工具类

    package cc.c; import java.io.File; import java.util.List; import android.os.StatFs; import java.io.F ...

  2. Android学习笔记-获取手机内存,SD卡存储空间。

    前面介绍到如何保存数据到手机内存或者SD卡,但是问题是,在保存以前,我们还需要对他们的空间(可用空间),进行判断,才可以进行后续操作,所以,本节我们就介绍如何获取手机内存以及Sd卡的空间. //这时获 ...

  3. 单元测试+内存、SD卡、SP读写+XmlPullParser

    测试: 测试的相关概念 1.根据是否知道源代码分类: 黑盒测试: a - b - c 边值测试 测试逻辑业务 白盒测试: 根据源代码写测试方法 或者 测试用例; 2.根据测试的粒度分类: 方法测试:写 ...

  4. Android之外部存储(SD卡)

    *手机的外部存储空间,这个我们可以理解成电脑的外接移动硬盘,U盘也行.所有的Android设备都有两个文件存储区域:“内部”和“外部”存储器.这两个名称来自早期的Android,当时大多数设备都提供内 ...

  5. [android] 保存文件到SD卡

    /****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/d ...

  6. Android数据存储之SD卡

    为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件.SD卡大大扩充手机的存储能力. 操作SD首先要加权限: <!--在SDCard中创建与删除文件权限 --> < ...

  7. Android中播放本地SD卡中歌曲须要的加入的权限

    使用MediaPlayer播放本地Mp3文件时.须要注意的訪问路径的问题以及訪问权限的问题. 1.訪问路径:/storage/emulated/0 此路径即为手机的根路径,能够通过下载ES文件浏览器软 ...

  8. android 写文件到sd卡问题小记

    android 写文件到sd卡问题小记 事情是这样子的.... 这天我开始编写项目调试工具,高大上不?-----其实就是记录实时网络请求和崩溃日志相关等的小工具(此处一个会心的微笑). 然后我是这样写 ...

  9. Android 数据库SQLite 写入SD卡

    如果手机没有root,数据库文件是无法查看到的,不方便调试. 最好的办法是把数据库写进SD卡. 修改的地方有两处: 1.在你的helper类中把数据库文件名称 DATABASE_NAME 由原来的一个 ...

  10. Android -- 创建数据库到SD卡

    SQLite 系统自带的SQLite是通过SQLiteOpenHelper实现的,而SQLiteOpenHelper是将数据库存储到/data/data/包名/databasas,这样做的话在没有ro ...

随机推荐

  1. grep,awk和sed的常用命令和语法

    Grep的常用命令语法 1. 双引号引用和单引号引用在g r e p命令中输入字符串参数时,最好将其用双引号括起来.例如:“m y s t r i n g”.这样做有两个原因,一是以防被误解为 s h ...

  2. 使用buildroot编译bind DNS服务器

    用buildroot来制作文件系统很方便,编译出来的文件系统是直接可用的,不用添加脚本等麻烦的工作,很多的库和app都可以直接添加到文件系统里边,如常用的udhcpc,tftp,apache,ligh ...

  3. Button的图像位置设置

    [button setImageEdgeInsets:UIEdgeInsetsMake(2, 70, 2,70 )]; [button setImageEdgeInsets:UIEdgeInsetsM ...

  4. Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度

     Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度 硬件平台: Raspberry Pi B+ 软件平台: Raspberry 系统与前期安装请参见:树莓派(Ros ...

  5. Mysql连接测试代码

    <?php $link=mysql_connect('localhost','root','htuidc'); if($link) echo "success"; ?>

  6. 破解金盘gdlisxp系统

    1.现在要破解的金盘gdlisxp系统版本 2.首先在你电脑上要有脱壳工具AspackDie,和OllyDBG动态调试工具,电脑上装好金盘软件. 3.用AspackDie进行对金盘应用程序脱壳处理,生 ...

  7. Cassandra 备份 - 1 - 节点镜像恢复

    之前比较关注如何使用Cassandra,但是真正想大规模使用前提还是需要搞清楚备份机制,确保数据安全. 本文主要内容来自文档 "Cassandra2.2"的翻译.最后部分为真实操作 ...

  8. web.xml中的url-pattern映射规则

    Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单.servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间. 一,s ...

  9. 神奇的fastcgi_finish_request

    当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法.按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行 ...

  10. LtUpload上传组件

    <?php/** * The Upload class * @author Alex Lee <iuyes@qq.com> * @license http://opensource. ...