package com.android.camera;
import android.util.Log;
import android.os.StatFs;
public class MemoryCheck{
private static final String TAG = "MemoryCheck";
private static final int DEFAULT_MAX_RATIO = 95;
private static final String KEY_INTERNAL_STORAGE = "ro.internalstorage.threshold";
public static boolean checkMemory() {
boolean result = false;
int max_ratio =
android.os.SystemProperties.getInt(KEY_INTERNAL_STORAGE, DEFAULT_MAX_RATIO);
String path = ImageManager.getBucketRootPath();
StatFs stat = new StatFs(path);
long total = (((long) stat.getBlockCount()) * ((long) stat.getBlockSize()));
stat.restat(path);
long free = (((long) stat.getAvailableBlocks()) * ((long) stat.getBlockSize()));
float free_ratio = (((float) free) / ((float) total));
float remain_ratio = (((float) (100 - max_ratio)) / 100);
result = free_ratio < remain_ratio;
Log.d(TAG,
String.format("check memory total = %d, free = %d, free_ratio = %f, remain_ratio = %f, result = %b",
new Object[] { total, free, free_ratio, remain_ratio, result }));
return result;
}
}