Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android -- 系統信息(內存、cpu、sd卡、電量、版本)獲取

Android -- 系統信息(內存、cpu、sd卡、電量、版本)獲取

編輯:關於Android編程

內存(ram)                                                                                android的總內存大小信息存放在系統的/proc/meminfo文件裡面,可以通過讀取這個文件來獲取這些信息:   復制代碼 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-30 08:05:14.807: INFO/-SystemInfo-(1519): ---MemTotal:       204876 kB   05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---MemFree:          4596 kB   05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Buffers:         16020 kB   05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Cached:          82508 kB   05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---SwapCached:         64 kB   05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Active:         137104 kB   05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Inactive:        41056 kB   05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---SwapTotal:       65528 kB   05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---SwapFree:        65368 kB   05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Dirty:              88 kB   05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Writeback:           0 kB   05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---AnonPages:       79672 kB   05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Mapped:          38296 kB   05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Slab:             5768 kB   05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---SReclaimable:     1856 kB   05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---SUnreclaim:       3912 kB   05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---PageTables:       8184 kB   05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---NFS_Unstable:        0 kB   05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---Bounce:              0 kB   05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---CommitLimit:    167964 kB   05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---Committed_AS: 11771920 kB   05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocTotal:   761856 kB   05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocUsed:     83656 kB   05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocChunk:   674820 kB 復制代碼 第一行是總內存大小(即用戶可以使用的ram的大小)!   獲取當前剩余內存(ram)大小的方法:   復制代碼 public long getAvailMemory() {           ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);           ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();           am.getMemoryInfo(mi);           return mi.availMem;       } 復制代碼 Rom大小                                                                                     復制代碼 public long[] getRomMemroy() {           long[] romInfo = new long[2];           //Total rom memory           romInfo[0] = getTotalInternalMemorySize();              //Available rom memory           File 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大小                                                                                復制代碼 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;       } 復制代碼 注意類型,不然相乘之後會有溢出。   電池電量                                                                                      復制代碼 private BroadcastReceiver batteryReceiver=new BroadcastReceiver(){           @Override           public void onReceive(Context context, Intent intent) {               int level = intent.getIntExtra("level", 0);               //  level加%就是當前電量了       }       }; 復制代碼 然後在activity的oncreate()方法中注冊   registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); CPU信息                                                                                      復制代碼 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的頻率,可以通過讀文件,讀取這些數據!   系統的版本信息                                                                                復制代碼 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];//KernelVersion           localBufferedReader.close();       } catch (IOException e) {       }       version[1] = Build.VERSION.RELEASE;// firmware version       version[2]=Build.MODEL;//model       version[3]=Build.DISPLAY;//system version       return version;   } 復制代碼 版本信息裡面還包括型號等信息。   MAC地址和開機時間                                                                         復制代碼 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);   }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved