转自http://gqdy365.iteye.com/blog/1066113,

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

publicvoidgetTotalMemory(){
  1. Stringstr1="/proc/meminfo";
  2. Stringstr2="";
  3. try{
  4. FileReaderfr=newFileReader(str1);
  5. BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);
  6. while((str2=localBufferedReader.readLine())!=null){
  7. Log.i(TAG,"---"+str2);
  8. }
  9. }catch(IOExceptione){
  10. }
  11. }
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-3008:05:14.807:INFO/-SystemInfo-(1519):---MemTotal:204876kB
  1. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---MemFree:4596kB
  2. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Buffers:16020kB
  3. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Cached:82508kB
  4. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---SwapCached:64kB
  5. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Active:137104kB
  6. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Inactive:41056kB
  7. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---SwapTotal:65528kB
  8. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---SwapFree:65368kB
  9. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Dirty:88kB
  10. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Writeback:0kB
  11. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---AnonPages:79672kB
  12. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Mapped:38296kB
  13. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Slab:5768kB
  14. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---SReclaimable:1856kB
  15. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---SUnreclaim:3912kB
  16. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---PageTables:8184kB
  17. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---NFS_Unstable:0kB
  18. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---Bounce:0kB
  19. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---CommitLimit:167964kB
  20. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---Committed_AS:11771920kB
  21. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocTotal:761856kB
  22. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocUsed:83656kB
  23. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocChunk:674820kB
05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---MemTotal:       204876 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---MemFree:          4596 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Buffers:         16020 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Cached:          82508 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---SwapCached:         64 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Active:         137104 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Inactive:        41056 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---SwapTotal:       65528 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---SwapFree:        65368 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Dirty:              88 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Writeback:           0 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---AnonPages:       79672 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Mapped:          38296 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Slab:             5768 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---SReclaimable:     1856 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---SUnreclaim:       3912 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---PageTables:       8184 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---NFS_Unstable:        0 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---Bounce:              0 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---CommitLimit:    167964 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---Committed_AS: 11771920 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocTotal:   761856 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocUsed:     83656 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocChunk:   674820 kB

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

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


二、Rom大小
publiclong[]getRomMemroy(){
  1. long[]romInfo=newlong[2];
  2. //Totalrommemory
  3. romInfo[0]=getTotalInternalMemorySize();
  4. //Availablerommemory
  5. Filepath=Environment.getDataDirectory();
  6. StatFsstat=newStatFs(path.getPath());
  7. longblockSize=stat.getBlockSize();
  8. longavailableBlocks=stat.getAvailableBlocks();
  9. romInfo[1]=blockSize*availableBlocks;
  10. getVersion();
  11. returnromInfo;
  12. }
  13. publiclonggetTotalInternalMemorySize(){
  14. Filepath=Environment.getDataDirectory();
  15. StatFsstat=newStatFs(path.getPath());
  16. longblockSize=stat.getBlockSize();
  17. longtotalBlocks=stat.getBlockCount();
  18. returntotalBlocks*blockSize;
  19. }
public long[] getRomMemroy() {long[] romInfo = new long[2];//Total rom memoryromInfo[0] = getTotalInternalMemorySize();//Available rom memoryFile 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大小
publiclong[]getSDCardMemory(){
  1. long[]sdCardInfo=newlong[2];
  2. Stringstate=Environment.getExternalStorageState();
  3. if(Environment.MEDIA_MOUNTED.equals(state)){
  4. FilesdcardDir=Environment.getExternalStorageDirectory();
  5. StatFssf=newStatFs(sdcardDir.getPath());
  6. longbSize=sf.getBlockSize();
  7. longbCount=sf.getBlockCount();
  8. longavailBlocks=sf.getAvailableBlocks();
  9. sdCardInfo[0]=bSize*bCount;//总大小
  10. sdCardInfo[1]=bSize*availBlocks;//可用大小
  11. }
  12. returnsdCardInfo;
  13. }
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;}

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

四、电池电量
privateBroadcastReceiverbatteryReceiver=newBroadcastReceiver(){
  1. @Override
  2. publicvoidonReceive(Contextcontext,Intentintent){
  3. intlevel=intent.getIntExtra("level",0);
  4. //level加%就是当前电量了
  5. }
  6. };
private BroadcastReceiver batteryReceiver=new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent) {int level = intent.getIntExtra("level", 0);//level加%就是当前电量了}};

然后在activity的oncreate()方法中注册
registerReceiver(batteryReceiver,newIntentFilter(Intent.ACTION_BATTERY_CHANGED));
registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));


五、CPU信息
publicString[]getCpuInfo(){
  1. Stringstr1="/proc/cpuinfo";
  2. Stringstr2="";
  3. String[]cpuInfo={"",""};
  4. String[]arrayOfString;
  5. try{
  6. FileReaderfr=newFileReader(str1);
  7. BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);
  8. str2=localBufferedReader.readLine();
  9. arrayOfString=str2.split("\\s+");
  10. for(inti=2;i<arrayOfString.length;i++){
  11. cpuInfo[0]=cpuInfo[0]+arrayOfString[i]+"";
  12. }
  13. str2=localBufferedReader.readLine();
  14. arrayOfString=str2.split("\\s+");
  15. cpuInfo[1]+=arrayOfString[2];
  16. localBufferedReader.close();
  17. }catch(IOExceptione){
  18. }
  19. returncpuInfo;
  20. }
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的频率,可以通过读文件,读取这些数据!

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

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

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


最后贴一个格式化数据的方法:
Java代码 publicStringformatSize(longsize){
  1. Stringsuffix=null;
  2. floatfSize=0;
  3. if(size>=1024){
  4. suffix="KB";
  5. fSize=size/1024;
  6. if(fSize>=1024){
  7. suffix="MB";
  8. fSize/=1024;
  9. }
  10. if(fSize>=1024){
  11. suffix="GB";
  12. fSize/=1024;
  13. }
  14. }else{
  15. fSize=size;
  16. }
  17. java.text.DecimalFormatdf=newjava.text.DecimalFormat("#0.00");
  18. StringBuilderresultBuffer=newStringBuilder(df.format(fSize));
  19. if(suffix!=null)
  20. resultBuffer.append(suffix);
  21. returnresultBuffer.toString();
  22. }
public String formatSize(long size) {String suffix = null;float fSize=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.DecimalFormat df = new java.text.DecimalFormat("#0.00");StringBuilder resultBuffer = new StringBuilder(df.format(fSize));if (suffix != null)resultBuffer.append(suffix);return resultBuffer.toString();}

保留两位小数。

更多相关文章

  1. Android6.0 Launcher3 修改app字体大小
  2. android平台解析epub格式的书籍信息
  3. Android动态设置edittext的hint属性显示的提示文字大小
  4. Android(安卓)dumpstate 工具解析
  5. Android(安卓)内存分析命令
  6. Android(安卓)自定义 Adapter
  7. Android——SpannableString实现带圆角标签效果
  8. Android从零开始(二)
  9. android apk 签名信息 相关

随机推荐

  1. Android重写onConfigurationChanged规避
  2. Android主线程与子线程的关系
  3. android TextView常用属性
  4. 关于ellipsize属性使用的一些细节
  5. 【Android】Android(安卓)SDK下载和更新
  6. 监听home键(android:launchMode="singleTa
  7. android context
  8. android编译系统makefile(Android.mk)写
  9. 关于Android堆内存的设置
  10. Android(安卓)ApiDemos示例解析(83):Grap