SD卡作為手機的擴充存放裝置,在手機中充當硬碟角色,可以讓我們手機存放更多的資料以及多媒體等大體積檔案。因此查看SD卡的記憶體就跟我們查看硬碟的剩餘空間一樣,是我們經常操作的一件事,那麼在Android開發中,我們如何能擷取SD卡的記憶體容量呢?
首先,要擷取SD卡上面的資訊,必須先對SD卡有訪問的許可權,因此第一件事就是需要添加訪問擴充裝置的許可權。
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>
其次,需要判斷手機上面SD卡是否插好,如果有SD卡的情況下,我們才可以訪問得到並擷取到它的相關資訊,當然以下這個語句需要用if做判斷。
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
取得sdcard檔案路徑
File path = Environment.getExternalStorageDirectory();
StatFs statfs = new StatFs(path.getPath());
擷取block的SIZE
long blocSize = statfs.getBlockSize();
擷取BLOCK數量
long totalBlocks = statfs.getBlockCount();
閒置Block的數量
long availaBlock = statfs.getAvailableBlocks();
計算總空間大小和閒置空間大小
儲存空間大小跟閒置儲存空間大小就被計算出來了。
public long getAvailaleSize(){
File path = Environment.getExternalStorageDirectory(); //取得sdcard檔案路徑
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
//(availableBlocks * blockSize)/1024 KIB 單位
//(availableBlocks * blockSize)/1024 /1024 MIB單位
}
public long getAllSize(){
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getBlockCount();
return availableBlocks * blockSize;
}