Еще одно из средств, предоставляемых инфраструктурой для работы с медиа Android, является возможность добавления информации о контенте в хранилище через класс MediaScannerConnection. Другими словами, если хранилище медиа не знает о некотором новом контенте, мы используем MediaScannerConnection для того, чтобы сообщить ему о нем. После этого данный контент может быть доступен другим. Давайте посмотрим, как это работает .
В показан класс активности, которая добавляет файл в хранилище медиа. Если добавление прошло успешно, добавленный файл отображается пользователю через намерение. Что же происходит “за кулисами”? Файл проверяется объектом MediaScanner для определения его типа и получения прочей информации. Объекту MediaScanner можно было бы передать MIME-тип нашего файла во втором параметре метода scanFile. Если MediaScanner не может определить тип файла по его расширению, он не может его добавить. Если файл относится к MediaStore, создается запись в базе данных поставщика медиа. Сам файл не перемещается. Но поставщик медиа знает о нем. Если вы добавили файл изображения, то можете открыть приложение Gallery (Галерея), чтобы увидеть его. Если вы добавили музыкальный файл, он появится в приложении Music (Музыка).
Если хотите заглянуть внутрь базы данных поставщика медиа, откройте окно инструментов, запустите команду adb shell и затем перейдите в папку /data/data/com. android.providers.media/databases на устройстве. Там вы найдете базы данных, и одной из них будет internal.db. Также там могут присутствовать и внешние базы данных, соответствующие одной или более SD-карт. Поскольку с телефоном Android можно использовать множество SD-карт, в указанной папке могут находиться несколько файлов внешних баз данных. Для просмотра таблиц в этих базах данных можно применять утилиту sqlite. Существуют также таблицы для аудио, изображений и видео. Информацию о работе с sqlite читайте .
Запуск MediaScanner для всей SD-карты
В предыдущем примере объект MediaScanner использовался для поиска конкретного файла. Это нормально, когда требуется добавить единственный файл. Но что если нужно переименовать файл или удалить его, и вы хотите, чтобы MediaStore был обновлен? К счастью, http://синомоби.рф/поиск-поставщиков-в-ките/ существует очень простой путь для решения этой задачи. Следующий код внутри приложения заставит MediaScanner сканировать все содержимое SD-карты:
На заметку! Если MediaScanner встречает в каталоге пустой файл по имени.nomedia, этот каталог и все его подкаталоги пропускаются при сканировании медиа. Файл.nomedia можно применять для сокрытия медиафайлов от приложений Gallery и Music. Если файлы, по вашему мнению, должны быть доступны в Gallery или Music, но не отображаются там, поищите в соответствующем каталоге файл.nomedia.
Опубликовал Kest
February 14 2015 13:39:31 ·
0 Комментариев ·
2498 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.