取得記憶卡狀態
Environment.getExternalStorageState()
狀態有以下幾種:
MEDIA_BAD_REMOVAL:不當移除。未經卸載就拔除記憶卡。
MEDIA_CHECKING:檢查中。
MEDIA_MOUNTED:已掛載,並且可讀寫。
MEDIA_MOUNTED_READ_ONLY:已掛載,但是只能讀取。
MEDIA_NOFS:未格式化或是格式無法讀取。
MEDIA_REMOVED:已移除。記憶卡槽偵測不到有記憶卡。
MEDIA_SHARED:記憶卡未掛載,使用的是usb分享的外部儲存裝置。
MEDIA_UNMOUNTABLE:有偵測到記憶卡,但是無法掛載。可能是記憶卡壞掉或是記憶卡分割區壞掉了。
MEDIA_UNMOUNTED:有偵測到記憶卡,但是尚未掛載。
取得記憶卡根路徑
Environment.getExternalStorageDirectory().getPath()
取得記憶卡容量
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
// 未使用(單位:bytes)
long sdFreeSize = stat.getAvailableBlocks() * stat.getBlockSize();
// 總容量(包含保留空間,單位:bytes)
long sdTotalSize = stat.getFreeBlocks() * stat.getBlockSize();
// 已使用(單位:bytes)
long sdUsedSize = sdTotalSize - sdFreeSize ;
ps.
1 gigabytes = 1024 megabytes = 1024*1024 kilobytes = 1024 * 1024 * 1024 bytes