Cómo obtener espacio libre disponible en sdcard desde la aplicación Android?

Estoy desarrollando una aplicación de Android donde necesito determinar el espacio libre disponible en el sdcard. ¿Puede alguien darme alguna sugerencia con respecto a esto por favor.

Gracias kaisar

Algo como esto debería funcionar:

File sdcard = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(sdcard.getAbsolutePath()); long available = stat.getAvailableBlocks() * (long) stat.getBlockSize(); 

Puede que tenga que descansar para obtener resultados precisos:

 StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath()); stat.restat(Environment.getExternalStorageDirectory().getAbsolutePath()); long available = ((long) stat.getAvailableBlocks() * (long) stat.getBlockSize()); 

Echa un vistazo a esta función

  private boolean is_sdCardSaveToUse(){ /**default disk cache size in bytes*/ final int DEFAULT_DISK_CACHE_SIZE = 1024 * 1024 * 10; //10 MB /**get sdCard state*/ String sdCardState = Environment.getExternalStorageState(); /**check if the sdCard is mounted*/ /**check if we can write to sdCard*/if (Environment.MEDIA_MOUNTED.equals(sdCardState)) { if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(sdCardState)) { Log.d("sdCard", "mounted readOnly"); } else { Log.d("sdCard", "mounted readWrite"); /**get free usable space in bytes */ long freeUsableSpace = Environment.getExternalStorageDirectory().getUsableSpace(); int temp = Math.round(((float) freeUsableSpace / 1024) / 1024); //convert from bytes to MB. Log.d("usableSpace= ", Integer.toString(temp) + " MB"); if (freeUsableSpace > DEFAULT_DISK_CACHE_SIZE){ return true; } else { Log.d("sdCard","not enough space"); return false; } } } else{ Log.d("sdCard","not mounted"); return false; } return false; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.