MediaStore в Android

MediaStore
в Android — это API, которое предоставляет доступ к мультимедийным файлам (изображениям, видео, аудио), хранящимся на устройстве. Оно используется для работы с контентом, который сохраняется в хранилище устройства или внешней памяти. MediaStore
позволяет приложениям запрашивать, добавлять, удалять и обновлять мультимедийные файлы с использованием разрешений и без прямого доступа к файловой системе.
Основные задачи MediaStore:
- Запрос мультимедийных файлов: с использованием курсоров можно получать доступ к изображениям, видео и аудиофайлам на устройстве.
- Добавление файлов в MediaStore: через ContentResolver можно добавлять новые записи мультимедиа.
- Удаление файлов: файлы можно удалять из хранилища.
- Обновление метаданных файлов.
Пример использования MediaStore для получения списка изображений:
val projection = arrayOf(
MediaStore.Images.Media._ID,
MediaStore.Images.Media.DISPLAY_NAME
)
val selection = null // Условие выбора (можно задать фильтрацию)
val selectionArgs = null // Аргументы для фильтрации
val sortOrder = "${MediaStore.Images.Media.DATE_ADDED} DESC" // Сортировка по дате добавления
val cursor = contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
selectionArgs,
sortOrder
)
cursor?.use {
val idColumn = it.getColumnIndexOrThrow(MediaStore.Images.Media._ID)
val nameColumn = it.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME)
while (it.moveToNext()) {
val id = it.getLong(idColumn)
val name = it.getString(nameColumn)
// Получаем URI изображения
val contentUri = ContentUris.withAppendedId(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id
)
// Используем полученные данные (например, для отображения изображений)
Log.d("MediaStoreExample", "Image ID: $id, Name: $name, URI: $contentUri")
}
}
Объяснение:
- projection: Указывает столбцы, которые мы хотим получить (ID и имя файла).
- selection и selectionArgs: Используются для фильтрации результатов (в данном случае нет фильтрации).
- sortOrder: Указывает, как сортировать данные (по дате добавления в порядке убывания).
- cursor: Используется для итерации по результатам запроса.
Таким образом, с помощью MediaStore
можно запросить список изображений, видео или аудио на устройстве, получать информацию о них, например, URI для последующего использования в приложении.