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();
}
保留两位小数。
更多相关文章
- NPM 和webpack 的基础使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- Android(安卓)如何隐藏标题栏和通知栏
- [Android开发常见问题-21] Android(安卓)近百个项目的源代码
- 布局技巧:使用ViewStub
- Ubuntu 14.10+NDK+ffmpeg编译+Android
- android light
- [Android]libpng的编译与使用
- android中获取布局文件的三种方法