我正在尝试在回收器视图中加载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
函数中获得路径。我已经添加了读取存储权限。我获取视频缩略图的方式正确吗?
发布于 2018-06-01 04:31:14
第一次使用毕加索最新的gradle:
implementation 'com.squareup.picasso:picasso:2.71828'
然后,您可以简单地这样做:
String filePath = "/mnt/sdcard/myimg.png";
Picasso.get().load(new File(filePath)).into(imageView);
https://stackoverflow.com/questions/50587681
复制相似问题