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

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

Java代码
  1. publicvoidgetTotalMemory(){
  2. Stringstr1="/proc/meminfo";
  3. Stringstr2="";
  4. try{
  5. FileReaderfr=newFileReader(str1);
  6. BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);
  7. while((str2=localBufferedReader.readLine())!=null){
  8. Log.i(TAG,"---"+str2);
  9. }
  10. }catch(IOExceptione){
  11. }
  12. }

    运行信息如下:
Java代码
  1. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---MemTotal:204876kB
  2. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---MemFree:4596kB
  3. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Buffers:16020kB
  4. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Cached:82508kB
  5. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---SwapCached:64kB
  6. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Active:137104kB
  7. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Inactive:41056kB
  8. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---SwapTotal:65528kB
  9. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---SwapFree:65368kB
  10. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Dirty:88kB
  11. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Writeback:0kB
  12. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---AnonPages:79672kB
  13. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Mapped:38296kB
  14. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Slab:5768kB
  15. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---SReclaimable:1856kB
  16. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---SUnreclaim:3912kB
  17. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---PageTables:8184kB
  18. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---NFS_Unstable:0kB
  19. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---Bounce:0kB
  20. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---CommitLimit:167964kB
  21. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---Committed_AS:11771920kB
  22. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocTotal:761856kB
  23. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocUsed:83656kB
  24. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocChunk:674820kB

第一行是总内存大小(即用户可以使用的ram的大小)!其他各项的介绍大家可以看这儿:
http://bg135.com/android-phones-to-get-the-total-memory-and-available-memory.html

获取当前剩余内存(ram)大小的方法:
Java代码
  1. publiclonggetAvailMemory(){
  2. ActivityManageram=(ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
  3. ActivityManager.MemoryInfomi=newActivityManager.MemoryInfo();
  4. am.getMemoryInfo(mi);
  5. returnmi.availMem;
  6. }



二、Rom大小

Java代码
  1. publiclong[]getRomMemroy(){
  2. long[]romInfo=newlong[2];
  3. //Totalrommemory
  4. romInfo[0]=getTotalInternalMemorySize();
  5. //Availablerommemory
  6. Filepath=Environment.getDataDirectory();
  7. StatFsstat=newStatFs(path.getPath());
  8. longblockSize=stat.getBlockSize();
  9. longavailableBlocks=stat.getAvailableBlocks();
  10. romInfo[1]=blockSize*availableBlocks;
  11. getVersion();
  12. returnromInfo;
  13. }
  14. publiclonggetTotalInternalMemorySize(){
  15. Filepath=Environment.getDataDirectory();
  16. StatFsstat=newStatFs(path.getPath());
  17. longblockSize=stat.getBlockSize();
  18. longtotalBlocks=stat.getBlockCount();
  19. returntotalBlocks*blockSize;
  20. }

注意类型,不然相乘之后会有溢出。可用内部存储的大小不能通过getRootDirectory();
取得,之前网上传的很多都是用getRootDirectory()取得的,我测试之后发现取得的数值不对。要根据getDataDirectory();
取得。

三、sdCard大小
Java代码
  1. publiclong[]getSDCardMemory(){
  2. long[]sdCardInfo=newlong[2];
  3. Stringstate=Environment.getExternalStorageState();
  4. if(Environment.MEDIA_MOUNTED.equals(state)){
  5. FilesdcardDir=Environment.getExternalStorageDirectory();
  6. StatFssf=newStatFs(sdcardDir.getPath());
  7. longbSize=sf.getBlockSize();
  8. longbCount=sf.getBlockCount();
  9. longavailBlocks=sf.getAvailableBlocks();
  10. sdCardInfo[0]=bSize*bCount;//总大小
  11. sdCardInfo[1]=bSize*availBlocks;//可用大小
  12. }
  13. returnsdCardInfo;
  14. }


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

四、电池电量

Java代码
  1. privateBroadcastReceiverbatteryReceiver=newBroadcastReceiver(){
  2. @Override
  3. publicvoidonReceive(Contextcontext,Intentintent){
  4. intlevel=intent.getIntExtra("level",0);
  5. //level加%就是当前电量了
  6. }
  7. };

然后在activity的oncreate()方法中注册
Java代码
  1. registerReceiver(batteryReceiver,newIntentFilter(Intent.ACTION_BATTERY_CHANGED));



五、CPU信息

Java代码
  1. publicString[]getCpuInfo(){
  2. Stringstr1="/proc/cpuinfo";
  3. Stringstr2="";
  4. String[]cpuInfo={"",""};
  5. String[]arrayOfString;
  6. try{
  7. FileReaderfr=newFileReader(str1);
  8. BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);
  9. str2=localBufferedReader.readLine();
  10. arrayOfString=str2.split("\\s+");
  11. for(inti=2;i<arrayOfString.length;i++){
  12. cpuInfo[0]=cpuInfo[0]+arrayOfString[i]+"";
  13. }
  14. str2=localBufferedReader.readLine();
  15. arrayOfString=str2.split("\\s+");
  16. cpuInfo[1]+=arrayOfString[2];
  17. localBufferedReader.close();
  18. }catch(IOExceptione){
  19. }
  20. returncpuInfo;
  21. }

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

六、系统的版本信息:
Java代码
  1. publicString[]getVersion(){
  2. String[]version={"null","null","null","null"};
  3. Stringstr1="/proc/version";
  4. Stringstr2;
  5. String[]arrayOfString;
  6. try{
  7. FileReaderlocalFileReader=newFileReader(str1);
  8. BufferedReaderlocalBufferedReader=newBufferedReader(
  9. localFileReader,8192);
  10. str2=localBufferedReader.readLine();
  11. arrayOfString=str2.split("\\s+");
  12. version[0]=arrayOfString[2];//KernelVersion
  13. localBufferedReader.close();
  14. }catch(IOExceptione){
  15. }
  16. version[1]=Build.VERSION.RELEASE;//firmwareversion
  17. version[2]=Build.MODEL;//model
  18. version[3]=Build.DISPLAY;//systemversion
  19. returnversion;
  20. }


版本信息里面还包括型号等信息。

七、MAC地址和开机时间:

Java代码
  1. publicString[]getOtherInfo(){
  2. String[]other={"null","null"};
  3. WifiManagerwifiManager=(WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
  4. WifiInfowifiInfo=wifiManager.getConnectionInfo();
  5. if(wifiInfo.getMacAddress()!=null){
  6. other[0]=wifiInfo.getMacAddress();
  7. }else{
  8. other[0]="Fail";
  9. }
  10. other[1]=getTimes();
  11. returnother;
  12. }
  13. privateStringgetTimes(){
  14. longut=SystemClock.elapsedRealtime()/1000;
  15. if(ut==0){
  16. ut=1;
  17. }
  18. intm=(int)((ut/60)%60);
  19. inth=(int)((ut/3600));
  20. returnh+""+mContext.getString(R.string.info_times_hour)+m+""
  21. +mContext.getString(R.string.info_times_minute);
  22. }



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

Java代码
  1. publicStringformatSize(longsize){
  2. Stringsuffix=null;
  3. floatfSize=0;
  4. if(size>=1024){
  5. suffix="KB";
  6. fSize=size/1024;
  7. if(fSize>=1024){
  8. suffix="MB";
  9. fSize/=1024;
  10. }
  11. if(fSize>=1024){
  12. suffix="GB";
  13. fSize/=1024;
  14. }
  15. }else{
  16. fSize=size;
  17. }
  18. java.text.DecimalFormatdf=newjava.text.DecimalFormat("#0.00");
  19. StringBuilderresultBuffer=newStringBuilder(df.format(fSize));
  20. if(suffix!=null)
  21. resultBuffer.append(suffix);
  22. returnresultBuffer.toString();
  23. }

保留两位小数。

更多相关文章

  1. Android使用SimpleAdapter更新ListView里面的Drawable元素
  2. android抽屉SlidingDrawer——wrap_content非全屏
  3. Retrofit2+Restful api的入门使用
  4. Android(安卓)字体大小怎么自适应不同分辨率?
  5. Android写入配置信息
  6. J6 Android(安卓)eMMC 分区介绍
  7. android 实现listView异步加载图片
  8. Android中visibility属性详解
  9. Android(安卓)Binder机制分析(4) Parcel类分析

随机推荐

  1. MySQL 子查询和分组查询
  2. 一种简单的ID生成策略: Mysql表生成全局
  3. MySQL limit分页大偏移量慢的原因及优化
  4. MySQL主从复制原理以及需要注意的地方
  5. Mysql联表update数据的示例详解
  6. MySQL数据类型优化原则
  7. MySQL 分组查询和聚合函数
  8. 专业级的MySQL开发设计规范及SQL编写规范
  9. Navicat如何远程连接云服务器数据库
  10. 如何把本地mysql迁移到服务器数据库