android系统信息获取

一、内存(ram):

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

Java代码

publicvoidgetTotalMemory(){

Stringstr1="/proc/meminfo";

Stringstr2="";

try{

FileReaderfr=newFileReader(str1);

BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);

while((str2=localBufferedReader.readLine())!=null){

Log.i(TAG,"---"+str2);

}

}catch(IOExceptione){

}

}

运行信息如下:

Java代码

05-3008:05:14.807:INFO/-SystemInfo-(1519):---MemTotal:204876kB

05-3008:05:14.807:INFO/-SystemInfo-(1519):---MemFree:4596kB

05-3008:05:14.807:INFO/-SystemInfo-(1519):---Buffers:16020kB

05-3008:05:14.807:INFO/-SystemInfo-(1519):---Cached:82508kB

05-3008:05:14.807:INFO/-SystemInfo-(1519):---SwapCached:64kB

05-3008:05:14.807:INFO/-SystemInfo-(1519):---Active:137104kB

05-3008:05:14.807:INFO/-SystemInfo-(1519):---Inactive:41056kB

05-3008:05:14.807:INFO/-SystemInfo-(1519):---SwapTotal:65528kB

05-3008:05:14.817:INFO/-SystemInfo-(1519):---SwapFree:65368kB

05-3008:05:14.817:INFO/-SystemInfo-(1519):---Dirty:88kB

05-3008:05:14.817:INFO/-SystemInfo-(1519):---Writeback:0kB

05-3008:05:14.817:INFO/-SystemInfo-(1519):---AnonPages:79672kB

05-3008:05:14.817:INFO/-SystemInfo-(1519):---Mapped:38296kB

05-3008:05:14.817:INFO/-SystemInfo-(1519):---Slab:5768kB

05-3008:05:14.817:INFO/-SystemInfo-(1519):---SReclaimable:1856kB

05-3008:05:14.827:INFO/-SystemInfo-(1519):---SUnreclaim:3912kB

05-3008:05:14.827:INFO/-SystemInfo-(1519):---PageTables:8184kB

05-3008:05:14.827:INFO/-SystemInfo-(1519):---NFS_Unstable:0kB

05-3008:05:14.827:INFO/-SystemInfo-(1519):---Bounce:0kB

05-3008:05:14.827:INFO/-SystemInfo-(1519):---CommitLimit:167964kB

05-3008:05:14.827:INFO/-SystemInfo-(1519):---Committed_AS:11771920kB

05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocTotal:761856kB

05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocUsed:83656kB

05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocChunk:674820kB

第一行是总内存大小(即用户可以使用的ram的大小)!

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

Java代码

publiclonggetAvailMemory(){

ActivityManageram=(ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.MemoryInfomi=newActivityManager.MemoryInfo();

am.getMemoryInfo(mi);

returnmi.availMem;

}

二、Rom大小

Java代码

publiclong[]getRomMemroy(){

long[]romInfo=newlong[2];

Fileroot=Environment.getRootDirectory();

StatFssf=newStatFs(root.getPath());

longbSize=sf.getBlockSize();

longbCount=sf.getBlockCount();

longavailBlocks=sf.getAvailableBlocks();

romInfo[0]=bSize*bCount;//总大小

romInfo[1]=bSize*availBlocks;//可用大小

returnromInfo;

}

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

三、sdCard大小

Java代码

publiclong[]getSDCardMemory(){

long[]sdCardInfo=newlong[2];

Stringstate=Environment.getExternalStorageState();

if(Environment.MEDIA_MOUNTED.equals(state)){

FilesdcardDir=Environment.getExternalStorageDirectory();

StatFssf=newStatFs(sdcardDir.getPath());

longbSize=sf.getBlockSize();

longbCount=sf.getBlockCount();

longavailBlocks=sf.getAvailableBlocks();

sdCardInfo[0]=bSize*bCount;//总大小

sdCardInfo[1]=bSize*availBlocks;//可用大小

}

returnsdCardInfo;

}

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

四、电池电量

Java代码

privateBroadcastReceiverbatteryReceiver=newBroadcastReceiver(){

@Override

publicvoidonReceive(Contextcontext,Intentintent){

intlevel=intent.getIntExtra("level",0);

//level加%就是当前电量了

}

};

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

Java代码

1.registerReceiver(batteryReceiver,newIntentFilter(Intent.ACTION_BATTERY_CHANGED));

registerReceiver(batteryReceiver,newIntentFilter(Intent.ACTION_BATTERY_CHANGED));

五、CPU信息

Java代码

publicString[]getCpuInfo(){

Stringstr1="/proc/cpuinfo";

Stringstr2="";

String[]cpuInfo={"",""};

String[]arrayOfString;

try{

FileReaderfr=newFileReader(str1);

BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);

str2=localBufferedReader.readLine();

arrayOfString=str2.split("\\s+");

for(inti=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(IOExceptione){

}

returncpuInfo;

}

/proc/cpuinfo文件中第一行是CPU的型号,第二行是CPU的频率,可以通过读文件,读取这些数据!

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

Java代码

publicStringformatSize(longsize){

Stringsuffix=null;

floatfSize=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.DecimalFormatdf=newjava.text.DecimalFormat("#0.00");

StringBuilderresultBuffer=newStringBuilder(df.format(fSize));

if(suffix!=null)

resultBuffer.append(suffix);

returnresultBuffer.toString();

}

保留两位小数。

原文地址:https://www.cnblogs.com/AlexCheng/p/2120021.html