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);
}