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”,并且很容易访问。
我正在尝试 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”,并且很容易访问。