Glide Picasso не будет загружать миниатюрные пути локально сохраненного видео - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь загрузить все видеофайлы из 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.Я добавил разрешение на чтение для хранения.Правильно ли я загружаю миниатюры видео?

1 Ответ

0 голосов
/ 31 мая 2018

Первое использование Picasso последний Gradle:

implementation 'com.squareup.picasso:picasso:2.71828'

Тогда вы можете просто сделать так:

String filePath = "/mnt/sdcard/myimg.png";
Picasso.get().load(new File(filePath)).into(imageView);
...