【问题标题】:IllegalArgumentException accessing gallery video URIIllegalArgumentException 访问画廊视频 URI
【发布时间】:2021-09-01 22:18:18
【问题描述】:

我正在尝试在 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)

任何指针将不胜感激。

谢谢。

【问题讨论】:

    标签: android kotlin mediastore


    【解决方案1】:

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

    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”,并且很容易访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多