IllegalArgumentException 访问图库视频 URI

IllegalArgumentException accessing gallery video URI

我正在尝试 Android 11 显示视频的缩略图。我已成功查询 MediaStore 并获得设备图库中图片和视频的 URI。我可以正常显示图片,但是当我尝试访问视频以制作缩略图时,出现此错误:

java.lang.IllegalArgumentException:无法访问内容://media/external/images/media/355 在 android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:342)

这是我的代码:

val mmr = MediaMetadataRetriever()
mmr.setDataSource(context, uri)
val bitmap = mmr.getFrameAtTime(1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);

GlideApp.with(context)
    .load(bitmap)
    .centerCrop()
    .into(view)

任何指点将不胜感激。

谢谢。

事实证明这是一个愚蠢的错误。我的投影仍在使用图像投影中的大部分字段:

val videoProjection = arrayOf(
    MediaStore.Images.Media._ID,
    MediaStore.Images.Media.DATE_ADDED,
    MediaStore.Images.Media.ORIENTATION,
    MediaStore.Video.VideoColumns.DURATION,
    MediaStore.Images.Media.SIZE,
)

...本来应该是这样的:

val videoProjection = arrayOf(
    MediaStore.Video.Media._ID,
    MediaStore.Video.Media.DATE_ADDED,
    MediaStore.Video.Media.ORIENTATION,
    MediaStore.Video.VideoColumns.DURATION,
    MediaStore.Video.Media.SIZE,
)

现在 URL 现在是“content://media/external/videos/media/355”,并且很容易访问。