Некоторые устройства на операционной системе Android имеют слот под карту памяти, чаще всего, формата microSD. Если у вас одно из таких устройств, это позволит:

  • хранить большее количество информации за счет увеличения объема памяти;
  • переносить некоторые приложения из внутреннего накопителя смартфона на SD-карту без потери их функционала.

Найти информацию о наличии слота под карту памяти sd можно на странице вашего устройства на сайте компании-производителя.

Некоторые из функций sd карты доступны только в устройствах с версией Android 6.0 и выше.

Установка SD-карты в слот android-устройства

Шаг 1. Как правильно установить карту памяти

  1. Определите расположение слота под сд карту в вашем устройстве.
  2. Выключите устройство.
  3. Извлеките слот или откройте заднюю панель устройства. Если это необходимо, приподнимите держатель карты памяти.
  4. Установите карту в нужное положение. Опустите держатель, если это необходимо.
  5. Верните слот и/или заднюю панель устройства в исходное положение.

Шаг 2. Как включить карту памяти sd

1. После включения телефона вы получите уведомление об установке карты памяти.

2. Кликните кнопку «Настроить».

3. Выберите один из вариантов настройки памяти:

  • Съемный накопитель. При выборе этого пункта можно сохранять файлы (музыку, фото и т.п.), переносить их с sd-картой на любое устройство, имеющее слот под карту, без потери сохраненной информации. Перенос приложений в этом случае не предусмотрен.
  • Внутренняя память. Выбирая этот пункт, вы получаете возможность сохранить приложения на дополнительном накопителе, но использовать их можно только на этом устройстве. После переноса сд карты в другое устройство она будет очищена.

4. Проведите дальнейшую настройку по подсказкам, возникающим на дисплее телефона.

5. Когда настройки памяти будут завершены, нажмите кнопку «Готово».

Использование SD-карты

Как перенести приложения на карту памяти

Если во время настройки вы выбрали пункт «Внутренняя память», то можете переместить некоторые приложения на дополнительный накопитель. Не для всех приложений доступен перенос из внутреннего хранилища на внешний накопитель.

Зайдите в настройки своего устройства.

Найдите пункт «Приложения».

Выберите, что именно хотите сохранить на карте памяти.

Выберите пункт «Хранилище».

Зайдите в раздел «Использовано» и кликните кнопку «Изменить».

Выберите пункт «SD-карта».

Проведите дальнейшую настройку по подсказкам, возникающим на дисплее вашего смартфона.

Как перенести файлы с телефона на карту памяти Андроид

Если во время настройки вы выбрали пункт «Съемный накопитель», это дает возможность переместить сохраненные на вашем телефоне файлы (музыку или фото и т.п.) на sd-карту, таким образом, освободив внутреннее хранилище смартфона.

Шаг 1. Копирование сохраненных в телефоне файлов на внешний накопитель

  1. Зайдите в настройки своего устройства.
  2. Кликните пункт «Память».
  3. Кликните пункт «Внутренняя память».
  4. Выберите, какой тип файлов вам нужно переместить.
  5. Долгим нажатием выберите те файлы, которые вам нужно отправить на внешний накопитель.
  6. Нажмите на три точки (?), выберите пункт «Скопировать в. ».
  7. Выберите пункты Сохранить > SD-карта.
  8. Выберите папку, в которой хотите сохранить файлы.
  9. Скопируйте выбранные файлы.

Шаг 2. Удаление файлов, сохраненных во внутреннем накопителе смартфона.

  1. Зайдите в настройки своего устройства.
  2. Выберите «Память».
  3. Выберите пункт «Внутренняя память».
  4. Выберите, какой тип файлов вы хотите удалить.
  5. Долгим нажатием выберите те файлы, которые нужно удалить.
  6. Выберите значок корзины.

Просмотр файлов или приложений, сохраненных на карте памяти

На телефоне можно просматривать список всех файлов, приложений. Кроме того, Андроид позволяет узнать, сколько свободного места осталось на sd-карте.

Если при настройке накопителя был выбран пункт «Внутренняя память»

  1. Зайдите в настройки своего устройства.
  2. Выберите «Память».
  3. В списке выберите карту памяти.
  4. Теперь можно увидеть количество использованного места, а также, сколько памяти накопителя еще свободно. Выбирая различные категории, вы можете просматривать, какие именно файлы скачаны на sd карту.

Если при настройке накопителя был выбран пункт «Съемный накопитель»

  1. Вытащите панель управления движением пальца по экрану смартфона сверху вниз.
  2. Нажмите кнопку «Открыть» под активным уведомлением об установке карты памяти.

Форматирование съемного накопителя

  1. Зайдите в настройки своего устройства.
  2. Выберите пункт «Память».
  3. В списке меню нажмите пункт sd-карта.
  4. Нажмите на три точки (?), выберите пункты Настройки > Формат.
  5. Выберите пункт «Очистить и отформатировать» — это удалит все сохраненные приложения/файлы, хранившиеся в памяти внешнего накопителя.

Отключение и извлечение карты памяти

Чтобы не повредить данные, сохраненные на съемном накопителе, перед извлечением его необходимо безопасно отключить!

Шаг 1. Отключение карты памяти

  1. Зайдите в настройки своего устройства.
  2. Выберите пункт «Память».
  3. Выберите пункт «Извлечь».

Приложения, сохраненные на карте памяти, после ее отключения не будут работать, пока карта не будет вставлена и подключена заново.

Разрабатывая приложение для проведения соревнований, я столкнулся с проблемой хранения базы данных. Проблема состояла в том, как мне определить внешнюю карту памяти. В целом поиск в сети точного ответа не дал. Поэтому, объединив все найденные результаты, я собрал свой класс. Если кому интересно, смотрим под катом.

Итак, начнем с теории.

Терминология

Гугл нам говорит, что есть следующие понятия:

  1. Внутренняя (internal) память — это часть встроенной в телефон карты памяти. При ее использовании по умолчанию папка приложения защищена от доступа других приложений (Using the Internal Storage).
  2. Внешняя (external) память — это общее «внешнее хранилище», т.е. это может быть как часть встроенной памяти, так и удаляемое устройство. Обычно это часть встроенной памяти, как удаляемое устройство я видел в последний раз на андройде 2.2, где встроенная память была около 2Гб, и подключаемая память становилась внешней (Using the External Storage).
  3. Удаляемая (removable) память — все хранилища, которые могут быть удалены из устройства без «хирургических» вмешательств.

До версии KitKat 4.4 API не предоставляло функционала для получения путей к внешней памяти. Начиная с этой версии (API 19) появилась функция public abstract File[] getExternalFilesDirs (String type), которая возвращает массив строк с путями к внутренней и внешней памяти. Но как же быть с нашей SD Card, которая вставлена в слот? Путь к ней мы опять не можем получить.

Результаты поиска

Чтобы ответить на поставленный вопрос я обратился к всезнающему гуглу. Но и он мне не дал четкого ответа. Было рассмотрено множество вариантов определения от использования стандартных функций, которые ведут к внешней памяти, но ничего общего с удаляемыми устройствами хранения данных они не имеют, до обработки правил монтирования устройств (Android же на ядре Linux работает). В последних случаях были использованы «зашитые» пути к папке с примонтироваными устройствами (в различных версиях эта директория разная). Не стоит забывать, что от версии к версии правила монтирования меняются.

В конечном итоге я решил объединить все полученные знания и написал свой класс, который может нам вернуть пути к внешним и удаляемым устройствам.

Описание кода

Был создан класс MountDevice, который содержит в себе путь к устройству, тип устройства и некий хэш.
Типов устройств выделено два (внутреннюю память я не стал трогать, так как к ней доступ можно получить через API системы).

И был создан класс StorageHelper, который и осуществляет поиск доступных карт памяти.

В классе StorageHelper реализовано два способа поиска — через системное окружение (Environment) и с использованием утилиты Linux mount, а точнее результата ее выполнения.

Способ первый — Environment

При работе с окружением я использую стандартную функцию getExternalStorageDirectory() для получения информации о внешней памяти. Чтобы получить информацию о удаляемой памяти, я использую переменную окружения «SECONDARY_STORAGE«.

Внешняя память всегда одна и обычно всегда есть, поэтому проверяем ее на читаемость, вычисляем хэш и запоминаем. Удаляемой памяти может быть много, поэтому необходимо полученную строку разбить по разделителю и проверять каждое значение.

Вариант решения взят со stackoverflow. Ответ где-то там внизу.

Способ второй — mount

Так как у меня долго не получалось заставить систему мне сказать путь к удаляемой памяти, я решил искать в сторону примонтированных устройств. В системе есть файлы конфигурации, в которых описаны правила монтирования внешних устройств. Все бы хорошо, но на Android версии 4.* к этому файлу простым смертным доступа нет, поэтому рассматривать этот способ не буду.

Вернемся к утилите mount. При запуске без параметров команда возвращает список смонтированных файловых систем. Удаляемые устройства имеют обычно формат файловой системы FAT, то будем выделять строки, в которых есть характеристика «fat«. Внешняя память будет характеризоваться параметром «fuse«.

Примечание: при использовании такого способа не всегда корректно (скорее всего я что-то не учел) определяются типы смотнтированных устройств. Разницу замечал на разных версиях Android. Поэтому этот способ можно использовать как дополнительный.

Вариант решения взят со stackoverflow. Ответов там несколько примерно одинаковых.

Про дублирование

Многие замечали в директории монтирования устройств такую картину:

И что самое интересно, все это одна и та же внешняя карта памяти. Такое дробление начинается с версии Jelly Bean и сделано это для поддержки многопользовательского режима работы системы. Более подробно тут. И вот, чтобы не получать одну и туже карту памяти как различные устройства, необходим способ определения идентичности. Если бы был доступ к конфигурации монтирования, то и вопросов не было. Но доступа нет. Поэтому я тут подсмотрел решение с расчетом хэша для каждого устройства:

  1. создаем StringBuilder
  2. записываем в него общий размер устройства и размер используемого пространства устройства
  3. обходим содержимое корня устройства
  4. записываем имя каталога
  5. записываем имя файла и размер
  6. вычисляем hash

Пример использования

Заключение

Подробные рассуждения по этому вопросу понимания памяти в Android, некоторые советы можно прочитать тут.

Исходный код всего класса расположен еще нигде не расположен. На днях постараюсь разместить на gitHub.

Как я могу узнать, что какой-либо файл существует или нет в Android sdcard или внутренней памяти?

Кейс: у нас нет точного каталога местоположения. Я хочу проверить этот файл в любом каталоге.

Если есть какой-либо метод или какой-либо пример, чтобы сделать это, пожалуйста, дайте мне знать.

2 ответа

  • Быстрее ли запустить приложение из внутренней памяти или с карты SD?

Я знаю, что существуют различные классы SD-карт, и я также знаю, что существует много различных видов внутренней памяти (например, мой Dell Streak 5 имеет встроенный 2GB Micro SD Card Class 4). Однако есть ли значительное увеличение/уменьшение скорости, если у меня есть приложение, установленное.

Я хотел бы сохранить файл на карте SD. Согласно документам Android, SharedPreference может помочь получить пары ключ-значение примитивных типов данных. Однако он хранит файлы во внутреннем хранилище. Существует ли класс с аналогичной функциональностью SharedPreference , но который может хранить.

Вы можете проверить, существует ли файл или нет, используя File.exists()

Пожалуйста, следуйте приведенным ниже образцам, доступным в stackoverflow

Я думаю, что приведенные выше ссылки могут помочь

Похожие вопросы:

Есть ли способ хранить данные приложения android на карте SD, а не во внутренней памяти? Я знаю, как перенести базу данных приложения sqlite из внутренней памяти в SDCard, но что, если внутренняя.

Файлы, которые мы храним в папке android R.raw (например, mySong.mp3), присутствуют во внутренней памяти мобильного устройства или на карте SD. у меня есть аудио песни 100 МБ, и я использую его в.

Я новичок в android. Я хочу знать, как программно найти путь к внутренней карте SD, внешней карте SD, внутреннему хранилищу телефона и личным данным в android. Я также хочу знать, как найти их.

Я знаю, что существуют различные классы SD-карт, и я также знаю, что существует много различных видов внутренней памяти (например, мой Dell Streak 5 имеет встроенный 2GB Micro SD Card Class 4).

Я хотел бы сохранить файл на карте SD. Согласно документам Android, SharedPreference может помочь получить пары ключ-значение примитивных типов данных. Однако он хранит файлы во внутреннем.

Я пытаюсь создать приложение, которое сохранит временный файл на sd-карте. если у пользователя нет sd карты я хочу чтобы приложение сохранило файл во внутреннем хранилище сори за мой английский.

Есть ли какой-нибудь способ в Java на самом деле узнать, установлено ли ваше приложение android на SD-карте или во внутреннем хранилище телефона? Если мое приложение установлено на внутренней памяти.

История: я скачиваю рингтон с веб-сервера, если смонтирована карта SD, я сохранил этот файл на SD-карту path like, mnt/sdcard/.my_folder_name/abc.mp3 ELSE сохранен во внутреннюю память с помощью.

Я пытаюсь сохранить файл как на внутренней, так и на внешней sd-карте .. в основном я хочу дать пользователю возможность сохранить файл на внутренней или внешней карте Вот как я создаю файл во.

я хочу получить свободное место на карте SD и внутренней памяти я использовал следующий код, чтобы получить свободное место во внутренней памяти StatFs stat = new.

Привет всем, у меня есть mp3 файлы на SD-карте. как получить путь к файлу mp3-песни с SD-карты.

пожалуйста, помогите мне.

6 ответов

Вы можете получить путь к sdcard из этого кода:

Затем укажите имя папки и имя файла

этот код помогает легко получить его.

На самом деле в некоторых устройствах по умолчанию имя sdcard отображается как extSdCard, а для других — sdcard1. Этот фрагмент кода помогает узнать этот точный путь и помогает восстановить путь к внешнему устройству.

Environment.getExternalStorageDirectory() будет НЕ возвращать путь к карте памяти SD..

как получить путь к файлу с SD-карты в android

По карте sd, я предполагаю, что вы имели в виду съемную карту micro SD.

В API-интерфейсе 19, то есть в Android версии 4.4 Kitkat, они добавили File[] getExternalFilesDirs (String type) в Context Класс, который позволяет приложениям хранить данные/файлы на микро SD-картах.

Android 4.4 — это первый выпуск платформы, который фактически разрешил приложениям использовать SD-карты для хранения. Любой доступ к SD-картам до уровня API уровня 19 осуществлялся через частные, неподдерживаемые API.

Environment.getExternalStorageDirectory() был от уровня API 1

getExternalFilesDirs (тип строки) возвращает абсолютные пути к каталогам конкретных приложений на всех устройствах общего доступа/внешних устройств хранения. Это означает, что он вернет пути как к внутренней, так и к внешней памяти. Как правило, второй возвращенный путь будет местом хранения карты microSD (если есть).

Совместное хранилище не всегда может быть доступно, поскольку съемный носитель может быть выброшен пользователем. Состояние носителя можно проверить, используя getExternalStorageState(File) .

В этих файлах нет безопасности. Например, любой приложение WRITE_EXTERNAL_STORAGE может записывать в эти файлы.

Внутренняя и внешняя память терминология в соответствии с Google/официальными документами Android отличается от тем, что мы думаем.

Как найти на андроиде сд