반응형
출처 : http://www.androidsnippets.com/memory-size-class-for-viewing-available-storage


Class used to view available and total storage for internal and external memory. Also does pretty formatting. 


  1. import java.io.File;  
  2.   
  3. import android.os.Environment;  
  4. import android.os.StatFs;  
  5.   
  6. public class MemoryStatus {  
  7.   
  8.         static final int ERROR = -1;  
  9.           
  10.         static public boolean externalMemoryAvailable() {  
  11.             return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);  
  12.         }  
  13.           
  14.         static public long getAvailableInternalMemorySize() {  
  15.                 File path = Environment.getDataDirectory();  
  16.                 StatFs stat = new StatFs(path.getPath());  
  17.                 long blockSize = stat.getBlockSize();  
  18.                 long availableBlocks = stat.getAvailableBlocks();  
  19.                 return availableBlocks * blockSize;  
  20.         }  
  21.           
  22.         static public long getTotalInternalMemorySize() {  
  23.                 File path = Environment.getDataDirectory();  
  24.                 StatFs stat = new StatFs(path.getPath());  
  25.                 long blockSize = stat.getBlockSize();  
  26.                 long totalBlocks = stat.getBlockCount();  
  27.                 return totalBlocks * blockSize;  
  28.         }  
  29.           
  30.         static public long getAvailableExternalMemorySize() {  
  31.                 if(externalMemoryAvailable()) {  
  32.                         File path = Environment.getExternalStorageDirectory();  
  33.                         StatFs stat = new StatFs(path.getPath());  
  34.                         long blockSize = stat.getBlockSize();  
  35.                         long availableBlocks = stat.getAvailableBlocks();  
  36.                         return availableBlocks * blockSize;  
  37.                 } else {  
  38.                         return ERROR;  
  39.                 }  
  40.         }  
  41.           
  42.         static public long getTotalExternalMemorySize() {  
  43.                 if(externalMemoryAvailable()) {  
  44.                         File path = Environment.getExternalStorageDirectory();  
  45.                         StatFs stat = new StatFs(path.getPath());  
  46.                         long blockSize = stat.getBlockSize();  
  47.                         long totalBlocks = stat.getBlockCount();  
  48.                         return totalBlocks * blockSize;  
  49.                 } else {  
  50.                         return ERROR;  
  51.                 }  
  52.         }  
  53.           
  54.         static public String formatSize(long size) {  
  55.                 String suffix = null;  
  56.           
  57.                 if (size >= 1024) {  
  58.                         suffix = "KiB";  
  59.                         size /= 1024;  
  60.                         if (size >= 1024) {  
  61.                                 suffix = "MiB";  
  62.                                 size /= 1024;  
  63.                         }  
  64.                 }  
  65.           
  66.                 StringBuilder resultBuffer = new StringBuilder(Long.toString(size));  
  67.           
  68.                 int commaOffset = resultBuffer.length() - 3;  
  69.                 while (commaOffset > 0) {  
  70.                         resultBuffer.insert(commaOffset, ',');  
  71.                         commaOffset -= 3;  
  72.                 }  
  73.           
  74.                 if (suffix != null)  
  75.                         resultBuffer.append(suffix);  
  76.                 return resultBuffer.toString();  
  77.         }  
  78. }  

 
반응형
Posted by Real_G