Я пытаюсь загрузить все видеофайлы из sdcard
в режиме рециркуляции.Я также хочу, чтобы миниатюра видео была приведена, поэтому мой код извлекает миниатюры видео
var thumbColumns = arrayOf(MediaStore.Video.Thumbnails.DATA)
fun getThumbnailPathForLocalFile(fileId:Long): String?{
var thumbCursor: Cursor? = null
try {
thumbCursor = contentResolver.query(
MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,
thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID + " = "
+ fileId, null, null)
if (thumbCursor!!.moveToFirst()) {
Toast.makeText(applicationContext, thumbCursor.getString(thumbCursor
.getColumnIndex(MediaStore.Video.Thumbnails.DATA)),Toast.LENGTH_LONG).show()
return thumbCursor.getString(thumbCursor
.getColumnIndex(MediaStore.Video.Thumbnails.DATA))
}
} finally {
thumbCursor?.close()
}
return null
}
. Метод возвращает следующий путь /storage/emulated/0/DCIM/.thumbnails/1526834275076.jpg
Ниже приведены способы, которыми я пыталсязагрузка изображения с помощью glide
video.thumbnailUrl
is /storage/emulated/0/DCIM/.thumbnails/1526834275076.jpg
1)
GlideApp.with(context)
.load(Uri.fromFile(File(video.thumbnailUrl)))
.into(holder.thumbnail)
2)
GlideApp.with(context)
.load("file:///"+video.thumbnailUrl)
.into(holder.thumbnail)
3)
GlideApp.with(context)
.load("file://"+video.thumbnailUrl)
.into(holder.thumbnail)
4)
GlideApp.with(context)
.load(video.thumbnailUrl)))
.into(holder.thumbnail)
То же самое делается с Picasso
.Я даже пытался использовать более старую версию Glide
, но все равно ничего.В большинстве вопросов о переполнении стека упоминается первый способ, но он не работает для меня.Я пробовал на всех версиях Android с 19 по 27, но не смог загрузить изображение.
У меня нет такого файла или каталога для всех случаев, но очевидно, что файл присутствует, иначе я бы не получилпуть от функции getThumbnailPathForLocalFile
.Я добавил разрешение на чтение для хранения.Правильно ли я загружаю миниатюры видео?