Android get free size of internal/external memory Android get free size of internal/external memory android android

Android get free size of internal/external memory


Below is the code for your purpose :

public static boolean externalMemoryAvailable() {        return android.os.Environment.getExternalStorageState().equals(                android.os.Environment.MEDIA_MOUNTED);    }    public static String getAvailableInternalMemorySize() {        File path = Environment.getDataDirectory();        StatFs stat = new StatFs(path.getPath());        long blockSize = stat.getBlockSizeLong();        long availableBlocks = stat.getAvailableBlocksLong();        return formatSize(availableBlocks * blockSize);    }    public static String getTotalInternalMemorySize() {        File path = Environment.getDataDirectory();        StatFs stat = new StatFs(path.getPath());        long blockSize = stat.getBlockSizeLong();        long totalBlocks = stat.getBlockCountLong();        return formatSize(totalBlocks * blockSize);    }    public static String getAvailableExternalMemorySize() {        if (externalMemoryAvailable()) {            File path = Environment.getExternalStorageDirectory();            StatFs stat = new StatFs(path.getPath());            long blockSize = stat.getBlockSizeLong();            long availableBlocks = stat.getAvailableBlocksLong();            return formatSize(availableBlocks * blockSize);        } else {            return ERROR;        }    }    public static String getTotalExternalMemorySize() {        if (externalMemoryAvailable()) {            File path = Environment.getExternalStorageDirectory();            StatFs stat = new StatFs(path.getPath());            long blockSize = stat.getBlockSizeLong();            long totalBlocks = stat.getBlockCountLong();            return formatSize(totalBlocks * blockSize);        } else {            return ERROR;        }    }    public static String formatSize(long size) {        String suffix = null;        if (size >= 1024) {            suffix = "KB";            size /= 1024;            if (size >= 1024) {                suffix = "MB";                size /= 1024;            }        }        StringBuilder resultBuffer = new StringBuilder(Long.toString(size));        int commaOffset = resultBuffer.length() - 3;        while (commaOffset > 0) {            resultBuffer.insert(commaOffset, ',');            commaOffset -= 3;        }        if (suffix != null) resultBuffer.append(suffix);        return resultBuffer.toString();    }

Get RAM Size

ActivityManager actManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);MemoryInfo memInfo = new ActivityManager.MemoryInfo();actManager.getMemoryInfo(memInfo);long totalMemory = memInfo.totalMem;


This is the way I did it :

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());long bytesAvailable;if (android.os.Build.VERSION.SDK_INT >=     android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {    bytesAvailable = stat.getBlockSizeLong() * stat.getAvailableBlocksLong();}else {    bytesAvailable = (long)stat.getBlockSize() * (long)stat.getAvailableBlocks();}long megAvailable = bytesAvailable / (1024 * 1024);Log.e("","Available MB : "+megAvailable);


Since API 9 you can do:

long freeBytesInternal = new File(ctx.getFilesDir().getAbsoluteFile().toString()).getFreeSpace();long freeBytesExternal = new File(getExternalFilesDir(null).toString()).getFreeSpace();