一、内存(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();

}

保留两位小数。

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android(安卓)如何隐藏标题栏和通知栏
  4. [Android开发常见问题-21] Android(安卓)近百个项目的源代码
  5. 布局技巧:使用ViewStub
  6. Ubuntu 14.10+NDK+ffmpeg编译+Android
  7. android light
  8. [Android]libpng的编译与使用
  9. android中获取布局文件的三种方法

随机推荐

  1. NDK开发指南---NDK安装
  2. 使用 IntelliJ 查看 Android(安卓)源码
  3. android 如何保护我们的app(二)(干货)
  4. Android使用文件管理器打开指定文件夹,浏
  5. 生产实习(Android)二
  6. Android之PopuWindow简单学习
  7. android如何去掉标题栏
  8. Ubuntu18.04上安装ROS的详细教程
  9. 微信电脑版怎么恢复默认设置?微信恢复默
  10. Win11 22H2 Build 22621登陆发布预览频道