Как узнать фактический размер установленной 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

Ответы на вопрос(2)

Ваш ответ на вопрос