Así es como se obtiene tamaños de almacenamiento interno:
StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
long blockSize = statFs.getBlockSize();
long totalSize = statFs.getBlockCount()*blockSize;
long availableSize = statFs.getAvailableBlocks()*blockSize;
long freeSize = statFs.getFreeBlocks()*blockSize;
Así es como se obtiene tamaños de almacenamiento externo (tamaño de tarjeta SD):
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
long blockSize = statFs.getBlockSize();
long totalSize = statFs.getBlockCount()*blockSize;
long availableSize = statFs.getAvailableBlocks()*blockSize;
long freeSize = statFs.getFreeBlocks()*blockSize;
corto nota
Bloques libres:
El número total de bloques que son libre en el sistema de archivos, incluyendo bloques reservados (que no están disponibles para las aplicaciones normales).
bloques disponibles:
El número de bloques que están libres de el sistema de archivos y aplicaciones disponibles a .
Aquí es cómo detectar si está montada la tarjeta SD:.
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state))
{
// We can read and write the media
}
else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
{
// We can only read the media
}
else
{
// No external media
}
¡gran respuesta! cualquier forma de obtener el tamaño de la tarjeta SD interna, no de la memoria flash integrada? y ¿cuál es la diferencia entre freeSize y availableSize? – zsniperx
He editado mi respuesta para incluir la información que solicitó. – inazaruk
¡Gracias! lo verificará una vez que tenga tiempo. Gran respuesta – zsniperx