내부/외부 저장소 용량 체크
12 Jan 2016 | Android모바일 디바이스내 내부/외부 저장소의 용량을 확인하는 함수입니다.
MemoryUtil.java
public class MemoryUtil {
public static void showStatus() {
Log.i("", "< MemoryStatus >");
Log.i("", "Total Internal MemorySize : " + getFormattedSize(GetTotalInternalMemorySize()));
Log.i("",
"Available Internal MemorySize : " + getFormattedSize(GetAvailableInternalMemorySize()));
if (IsExternalMemoryAvailable() == true) {
Log.i("", "Total External MemorySize : " + getFormattedSize(GetTotalExternalMemorySize()));
Log.i("",
"Available External MemorySize : " + getFormattedSize(GetAvailableExternalMemorySize()));
}
}
private static boolean IsExternalMemoryAvailable() {
return android.os.Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED);
}
private static long GetTotalInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
private static long GetAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
private static long GetTotalExternalMemorySize() {
if (IsExternalMemoryAvailable() == true) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
return -1;
}
private static long GetAvailableExternalMemorySize() {
if (IsExternalMemoryAvailable() == true) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
return -1;
}
private static String getFormattedSize(long size) {
String suffix = "";
if (size >= 1024) {
suffix = "KB";
size /= 1024;
if (size >= 1024) {
suffix = "MB";
size /= 1024;
}
}
StringBuilder sb = new StringBuilder(Long.toString(size));
int commaOffset = sb.length() - 3;
while (commaOffset > 0) {
sb.insert(commaOffset, ',');
commaOffset -= 3;
}
sb.append(suffix);
return sb.toString();
}
}