Все о тюнинге авто

Виртуальная sd карта. Как пользоваться SD-картой на устройстве Android

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

Не всегда можно найти рекавери для конкретного телефона/планшета, поддерживающее разбивку карт памяти, поэтому в данной статье мы расскажем, как это сделать с помощью приложения для Android – AParted.

Данное приложение предоставляет следующие возможности (из официальной документации):

  • Разбивка на разделы внешней/внутренней памяти Android-устройства.
  • Форматирование внешней/внутренней памяти Android-устройства.
  • Удаление разделов.
  • Проверка и исправление ошибок файловых систем.
  • Изменение размера разделов.
  • Обновление файловых систем.

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

Подготовка к разбивке

Перед разбивкой обязательно сделайте резервную копию важных для Вас данных (фото, видео и т.п.), так как все файлы будут удалены из карты памяти в процессе разбивки.

Убедитесь, что на Вашем телефоне присутствует , без него AParted не будет работать.

Перед запуском приложения необходимо отключить карту памяти в настройках Android. Для этого перейдите в "Настройки > Память", в разделе подключенной microSD карты нажмите на пункт "Безопасное извлечение" и подтвердите действие.

Разметка будущих разделов

Запустите приложение AParted, на вкладке "CREATE" Вы увидите два графических представления карты памяти в виде прямоугольников: нижний прямоугольник с надписью "Карта памяти SD таблицы разделов msdos" отображает текущую разметку разделов, а верхний "Новые таблицы разделов msdos" – схему будущих разделов на карте microSD.

Нажмите на кнопку "ADD", чтобы добавить первый раздел, и укажите ползунком его размер. Этот раздел будет доступен телефону/планшету как внешняя память под фотографии, музыку и т.д. Для более точной разбивки нажмите на число с MB, в появившемся поле укажите точный размер в мегабайтах и подтвердите изменения, нажав "ОК". Оставьте галочку "Format" включенной и файловую систему "fat32" без изменений.

Снова нажмите на кнопку "ADD", чтобы добавить второй раздел на карте microSD, который в будущем будет служить расширением системной памяти Android-устройства. Выберите ползунком все оставшееся место, галочку "Format" оставьте включенной, нажмите на надпись "fat32" и выберите одну из следующих файловых систем: "ext2", "ext3" или "ext4".

А вот здесь начинается самое интересное, желательно выбрать вариант "ext4", но существует ряд причин, по которым Вам не удастся создать раздел в данной файловой системе: ядро/прошивка системы Android, класс/производитель (качество) карты памяти и др.

Поэтому экспериментируйте, попробуйте сначала создать раздел с "ext4", потом "ext3" и "ext2". В конце концов приложение Link2SD поддерживает все вышеперечисленные файловые системы.

После выполнения операций выше прямоугольник с надписью "Новые таблицы разделов msdos" должен отобразить схему будущих разделов Вашей карты памяти.

Выполнение разбивки

Чтобы применить разметку новых разделов к карте памяти, нажмите на кнопку "APPLY". Приложение AParted предупредит Вас, что все данные на съемном носителе будут стерты.

Дальше будет отображен процесс разбивки и форматирования разделов карты памяти, по завершении которого на нижнем графике "Карта памяти SD таблицы разделов msdos" отобразится результат разбивки носителя. Снова перейдите в "Настройки > Память" телефона/планшета и в разделе внешней памяти нажмите на пункт "Подключить SD-карту". После подключения и анализа microSD карты системой Android Вы увидите что ее память уменьшилась до установленного Вами размера.

Если в статусе телефона появится сообщение, что SD-карта повреждена, перезагрузите систему Android, после перезагрузки карта памяти должна автоматически подключиться.

Настройка Link2SD

Установите и запустите . Программа должна автоматически определить наличие второго раздела на карте памяти и выдать запрос на создание скрипта монтирования. Отметьте в списке файловую систему второго раздела, которую вы указывали при разбивке карты памяти в приложении AParted, подтвердите запрос и после выполнения операции нажмите на кнопку "Перезагрузить устройство".

После перезагрузки системы Android можно переносить приложения из памяти устройства на второй раздел внешней карты памяти.

В некоторых устройствах Android есть слоты для карт памяти (как правило, формата microSD). Если устройство поддерживает SD-карты, вы можете:

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

Чтобы узнать, есть ли у вашего устройства слот для SD-карты, посетите сайт производителя .

Примечание. Некоторые из этих действий можно выполнить только на устройствах с Android 6.0 и более поздними версиями.

Как установить SD-карту

Шаг 1. Вставьте SD-карту.
  1. Уточните, где находится слот для SD-карты.
  2. Выключите телефон.
  3. Извлеките лоток SD-карты или снимите заднюю крышку устройства (в зависимости от модели). При необходимости поднимите язычок, удерживающий карту.
  4. Поместите SD-карту в слот. Если вы подняли удерживающий язычок, опустите его.
  5. Установите обратно лоток SD-карты или заднюю крышку устройства.
Шаг 2. Включите SD-карту.
  1. Дождитесь появления уведомления об SD-карте.
  2. Нажмите Настроить .
  3. Выберите нужный тип хранилища.
    • Съемный накопитель:
      Карту можно переносить на другое устройство вместе со всеми файлами (например, фотографиями и музыкой). Приложения на съемный накопитель перемещать нельзя.
    • Внутренняя память:
      На карте можно хранить приложения и данные только для этого устройства. Если вы переместите ее на другое устройство, все данные с нее будут удалены.
  4. Чтобы настроить SD-карту, следуйте инструкциям на экране.
  5. По завершении нажмите Готово .

Как использовать SD-карту

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

Если вы подключили карту в качестве внутренней памяти, можно перенести приложения на нее.

Примечание. Не все приложения можно перенести SD-карту.

Как переместить файлы на SD-карту

Если вы установили SD-карту в качестве съемного накопителя, то можете перенести на нее различные файлы, например музыку и фотографии. После этого их можно удалить из внутренней памяти устройства.

Шаг 1. Скопируйте файлы на SD-карту.

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

Вы можете посмотреть содержимое SD-карты и узнать, сколько места осталось.

Если SD-карта используется в качестве внутреннего накопителя

Если SD-карта используется в качестве съемного накопителя

  1. Проведите по экрану сверху вниз, чтобы открыть панель уведомлений.
  2. Под уведомлением об SD-карте нажмите Открыть .

Dolphin can store data to a virtual SD card named sd.raw . By default, it will be created with the size of 128MB.

The virtual SD card has important use for homebrew apps on Dolphin. Project M and Mario Kart Wii custom tracks are two good examples, as some homebrew apps can only work using files stored on the SD card of the real hardware for which they were designed.

Contents

Creating a Virtual SD Card

It is recommend to create one with size at least 1GB for large homebrew apps, for example, Project M, and no more than 2GB for best compatibility as there are compatibility issues with some homebrew apps trying to run under an SDHC card on the real hardware.

Command Line and Executable Files

WinImage is unreliable, because oddly enough, it will cause desync and few other unforeseeable problems. ImDisk will be fine.

Quick guide for mounting and editing the virtual SD card with the ImDisk Virtual Disk Driver :

  1. Right-click on sd.raw file then click "Mount as ImDisk Virtual Disk" from the context menu.
  2. Check box Removable media then hit "OK" . The predefined drive letter and everything else will do just fine.
    • The virtual SD card will now appear as "Removable Disk" in which the native Explorer window can read and write in there.
  3. When done editing the virtual SD card, simply unmount it by right-click on the "Removable Disk" then click "Unmount ImDisk Virtual Disk" from the context menu.
    • The virtual SD card must be dismounted before using with Dolphin.

Dolphin Setting

Go to Options > Configure... > Wii > and enable Insert SD Card .

Usage

With Homebrew App

The external files used for the homebrew app must be stored within sd.raw and the homebrew app itself (boot.elf or boot.dol ) must exist outside of it for Dolphin to load. Project M, for example, will load from SD root \projectm\ and Dolphin will need to launch Project M through \apps\projectm\boot.elf , NOT in the virtual SD card. For convenience"s sake, it is ideal to have same copies paralleled between inside and outside of the virtual SD card.

Though, it is possible to start homebrew app from virtual SD card through homebrew exploits for Wii.

The Wii game launcher app will only work if a particular Wii game is set as the default ISO. Within the Dolphin game list, open context menu (right-click) on any Wii game and click Set as default ISO . Do this before loading a homebrew app with Dolphin.

For Netplay

Netplay will eventually desync if anything reads the virtual SD card that is not cloned, regardless of the same size it was created, and identical file/folder structures within its root. To prevent that, sd.raw must be copied from host"s computer to joiners" computers before starting netplay. If the virtual SD card was used offline or online with write block disabled, the MD5 checksum will change ("Date Accessed" of the files are what"s different in virtual SD card), but will not cause desync. The SD card got to be coming from elsewhere or subjected to the files modified within to be "different".

For the Wii game launcher app, users on both ends must have the same copies of homebrew app and the game in their game list first, then set the game as default ISO, as mentioned in previous section.

Этот инструмент позволяет создавать разделы и управлять ими на SD карте/USB диске телефона или планшета. Вы можете добавить больше оперативной памяти в устройство, создав раздел подкачки. Также можете восстанавливать повреждения файловой системы SD карты. Поддерживает только "основной" тип раздела.
Функции :

  • создание разделов;
  • удаление разделов;
  • восстановление поврежденных файловых систем.

Поддерживаемые файловые системы:

  • FAT16, FAT32, EXT2, EXT3, EXT4, SWAP, NTFS (начиная с версии MoalBoal).

Требования:

  • Root телефон ;
  • наличие Busybox ;
  • установка во внутреннюю память;
  • перед началом работы с приложением отключить SD карту.

Инструкция как создать разделы с помощью программы

Самое первое, перекинуть с флешки все ценные Вам файлы на ПК, то есть как с флешки после этого всё удалится.

- Открываем программу

В разделе Create жмём два раза плюсик "+"

Первый раздел "Part 1" выбираем Fat32, второй "Part 2" выбираем нужный ext2/3/4 или swap.
- Слайдером выставляем размер каждого раздела, галочка на "Format" должна стоять.

Подтверждаем "Ок"

Всё готово.

Как вернуть флешке полный объём
Если решили удалить второй раздел с флешке можно сделать так.
- Заходим в настройки телефона, "Память" и жмём "Извлечь SD-карту".
- Открываем программу
- В разделе Create жмём один раз плюсик "+"
- В "Part 1" выбираем Fat32, слайдером выставляем на полный объём флешки, галочка на "Format" должна стоять.

Софт клавиша, жмём "применить изменения"

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

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

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

Гугл нам говорит, что есть следующие понятия:
  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 системы).

Public enum MountDeviceType { EXTERNAL_SD_CARD, REMOVABLE_SD_CARD }
И был создан класс StorageHelper , который и осуществляет поиск доступных карт памяти.

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

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

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

Функция fillDevicesEnvirement

String path = android.os.Environment.getExternalStorageDirectory() .getAbsolutePath(); if (!path.trim().isEmpty() && android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { testAndAdd(path, MountDeviceType.EXTERNAL_SD_CARD); } // Получаем ремувабл String rawSecondaryStoragesStr = System.getenv("SECONDARY_STORAGE"); if (rawSecondaryStoragesStr != null && !rawSecondaryStoragesStr.isEmpty()) { // All Secondary SD-CARDs splited into array final String rawSecondaryStorages = rawSecondaryStoragesStr .split(File.pathSeparator); for (String rawSecondaryStorage: rawSecondaryStorages) { testAndAdd(rawSecondaryStorage, MountDeviceType.REMOVABLE_SD_CARD); } }


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

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

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

Функция fillDevicesProcess

try { Runtime runtime = Runtime.getRuntime(); proc = runtime.exec("mount"); try { is = proc.getInputStream(); isr = new InputStreamReader(is); br = new BufferedReader(isr); while ((line = br.readLine()) != null) { if (line.contains("secure")) continue; if (line.contains("asec")) continue; if (line.contains("fat")) {// TF card String columns = line.split(" "); if (columns != null && columns.length > 1) { testAndAdd(columns, MountDeviceType.REMOVABLE_SD_CARD); } } else if (line.contains("fuse")) {// internal(External) // storage String columns = line.split(" "); if (columns != null && columns.length > 1) { // mount = mount.concat(columns + "\n"); testAndAdd(columns, MountDeviceType.EXTERNAL_SD_CARD); } } } } finally { ... } } catch (Exception e) { ... }

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

Кто еще какими способами пользуется?

Теги: Добавить метки