auf die externe SD-Karte verfügbar „freien“ Raum erhalten eine Nummer, die mit der Menü-> Einstellungen-> SD-Karte und Telefonspeicher Nummer stimmt zu zeigen, verwenden Sie den folgenden Code ein:
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
double sdAvailSize = (double)stat.getAvailableBlocks()
* (double)stat.getBlockSize();
//One binary gigabyte equals 1,073,741,824 bytes.
double gigaAvailable = sdAvailSize/1073741824;
Hier wie Sie interne Speichergrößen erhalten:
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;
Hier ist, wie Sie externe Speichergrößen (SD-Format) erhalten:
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;
Kurzinformation
Freie Blöcke:
Die Gesamtzahl der Blöcke, die frei auf dem Dateisystem, einschließlich reservierten Blöcke (die zu normalen Anwendungen nicht verfügbar sind) .
Verfügbare Blöcke:
Die Anzahl der Blöcke, die Anwendungen auf das Dateisystem und kostenfrei zur Verfügung stehen.
Hier ist, wie zu erkennen, ob SD-Karte montiert ist:
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
}
Relevante Dokumentation: http://developer.android.com/reference/android/os/StatFs.html
interessante Erklärung, sehr hilfreich – Dimitri
Ich bin hergekommen, als 'getAvailableBlocks()' ist veraltet verwenden. Es funktioniert nicht ab KitKat. Es scheint, dass diese Werte negativ sind, wenn die Größe zu groß ist. Also, es wird vorgeschlagen, 'getAvailableBlocksLong()' zu verwenden. – msysmilu
Ist ** freeSize ** in MB oder Bytes? –