【问题标题】:Glide Picasso won't load thumbnail path of locally stored videoGlide Picasso 不会加载本地存储视频的缩略图路径
【发布时间】:2018-06-02 17:29:48
【问题描述】:

我正在尝试在回收站视图中加载来自 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/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,但仍然没有。大多数 Stack Overflow 问题都提到了第一种方式,但它对我不起作用。我尝试了从 19 到 27 的所有 Android 版本,但无法加载图像。

对于所有情况,我都没有得到这样的文件或目录,但显然该文件存在,否则我将无法从 getThumbnailPathForLocalFile 函数中获取路径。我已经添加了读取存储权限。我获取视频缩略图的方式是否正确?

【问题讨论】:

  • 我没有用这个,有开发者会告诉你解决方案。
  • manifest里面的read external storage权限怎么样? Android 6+ 的运行时权限代码?
  • @greenapps 我已经这样做了。如果我没有包含权限,那么我怎么能得到缩略图的路径。问题在于 Glide 和 Picasso
  • 您从媒体商店获得了该路径。要获得该路径,您不需要权限。
  • bumptech.github.io/glide/doc/debugging.html 开头,您需要提供更多关于具体失败原因的详细信息

标签: android picasso android-glide mediastore


【解决方案1】:

首先使用毕加索最新的gradle:

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

那么你可以简单地这样做:

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

【讨论】:

  • 会尽力让你知道
  • 应用程序刚刚崩溃 java.lang.NullPointerException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on an null object reference
  • 所以这不是你毕加松的问题,你和别人有问题。这段代码对我有用,谢谢。
  • 你明白视频和图像是不同的东西吗?
  • @user25 先把问题读清楚。他返回一个缩略图并尝试通过 Picasso 显示缩略图。
猜你喜欢
  • 1970-01-01
  • 2016-12-01
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 2017-09-04
  • 2018-08-26
相关资源
最近更新 更多