1. 程式人生 > >Android 獲取手機記憶體儲存容量資訊

Android 獲取手機記憶體儲存容量資訊

獲取手機記憶體儲存資訊

我們現在的Android手機中就用這個儲存資訊的容量的
功能,所以 看了原始碼,學習然後總覺下,如發現錯誤請多指正;
用到了兩個類

1.Environment類:這個單詞翻譯中文的意思是:外界、環境,顧名思義。這個類就是外部儲存的一些狀態等資訊,它提供了一些外部儲存狀態的常量值, 或獲取儲存目錄的方法;

狀態常量值:
MEDIA_BAD_REMOVAL

MEDIA_CHECKING

MEDIA_MUNTED

MEDIA_MOUNTED_READ_ONLY

MEDIA_NOFS
等等..

方法:

getDataDirectory() //獲取手機記憶體目錄 也就是 data/data

getDownloadCacheDirectory() //獲取下載快取目錄

getExternalStorageDirectory() //獲取外部儲存的目錄

getExternalStorageState() //獲取當前外部儲存的狀態

在這裡當然是用到了 Environmnet.getDataDirectory() 的方法獲取手機記憶體目錄

StatFs類 這個類是儲存了檔案系統資訊和 情況的類

它提供了得到檔案系統一塊儲存空間的大小的方法
StatFs stat = new StatFs(path.getPath());
得到的位元組數
stat.getBlockSizeLong();


**得到檔案系統用了多少塊儲存空間的塊數**
stat.getBlockCountLong();“`

得到該檔案系統已用了多少塊儲存空間的塊數
stat.getAvailableBlocksLong();

所以呢!最後的步驟:

1.得到手機記憶體目錄
2.得到檔案系統一塊儲存空間的位元組數
3.得到該檔案系統總空間所佔 記憶體塊的 塊數
4.得到該檔案系統已用的 記憶體塊的塊數
5.計算該檔案總空間和已用空間的位元組數
最後,格式化一下:
Formatter.formatFileSize(Context context,long size);

最後,看下程式碼:

public void SdSpace() { 
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());

//得到每一塊空間的大俠
long blockSize = stat.getBlockSizeLong();
//得到 空間快個數
long totalBlocks = stat.getBlockCountLong();
//得到已用的空間 塊數
long availableBlocks = stat.getAvailableBlocksLong();

long totalSize = blockSize * totalBlocks;
long availSize = availableBlocks * blockSize;

String totalStr = Formatter.formatFileSize(this, totalSize);
String availStr = Formatter.formatFileSize(this, availSize);
tv.setText("總空間:"+totalStr+"\n"+"可存:"+availStr);
    }