Как узнать фактический размер установленной SD-карты в Android?
Я пытаюсь найти способ найти общий размер и свободное место на SD-карте, установленной на телефоне, из моего исследования SOF и на сайте разработчиков Android, я смог найти метод getExternalStorageDirectory (), но в соответствии сAndroid API это возвращает каталог, который не обязательно является внешним: "
Традиционно это SD-карта, но она также может быть реализована как встроенное хранилище в устройстве, которое отличается от защищенного внутреннего хранилища и может быть смонтировано как файловая система на компьютере ».
Итак, я понял из того, что написановнешнее хранилище" Каталог может фактически быть отделен от нескольких физических устройств хранения данных (внутренней и внешней памяти). И из моих испытаний эточто ямы обнаружили, что размер, возвращаемый с помощью этого метода, примерно в 1,5 раза больше размера моей фактической SD-карты.
Итак, мой вопрос, есть ли программный способ вернуть общий размер и доступное пространство только на SD-карте? Сам телефон может дать мне эту информацию, поэтому я чувствую, что должен быть способ, но яЯ в недоумении сейчас ... любая помощь будет оценена!
РЕДАКТИРОВАТЬ: это код, который ям в настоящее время используется для общего размера
private long TotalSDMemory(){
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getAbsolutePath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
long totalSpace = totalBlocks * blockSize;
Log.d(TAG,"Size of total SD Memory: "+totalSpace);
Log.d(TAG, "External storage emulated: "+Environment.isExternalStorageEmulated());
return totalSpace;
}
Редактировать (2): я неЯ не знаю, что это имеет значение, но у меня есть Samsung Galaxy S3, который я использую для тестирования кода, очевидно, у Samsung другая структура файлов для их внешней памяти. Вот ссылка, которая должна помочь кому-либо получить правильный размер:Получить размер SD-карты в телефонах Samsung