尝试从视频中获取缩略图。在API 29之前,这是使用MediaStore.Images.Thumbnails进行管理的。代码示例
Bitmap bitmapThumbnail = ThumbnailUtils.createVideoThumbnail(videoArrayList.get(position).getPath(), MediaStore.Images.Thumbnails.MINI_KIND);
但是在API 29中,MediaStore.Images.Thumbnails被声明为已弃用。 Google提供了ContentResolver#loadThumbnail。告诉我如何使用它。
答案 0 :(得分:2)
createVideoThumbnail
的更改自:
公共静态位图createVideoThumbnail(字符串filePath,int类型)
到
公共静态位图createVideoThumbnail(文件文件,大小大小,CancellationSignal信号)
因此,您在问题中提供的示例将更改为以下内容:
Size mSize = new Size(96,96);
CancellationSignal ca = new CancellationSignal();
Bitmap bitmapThumbnail = ThumbnailUtils.createVideoThumbnail(new File(videoArrayList.get(position).getPath()), mSize, ca);
您可以使用CancellationSignal
通过调用Bitmap
来取消ca.cancel();
的创建。
Size
的值取决于您想要的Bitmap
的大小:
大小:屏幕上将显示此缩略图的目标区域。这将作为EXTRA_SIZE传递给提供程序,以帮助其避免下载或生成大量资源。此值不能为空。
您还可以使用loadThumbnail
,它接受Uri
而不是File
对象,如下所示:
公共位图loadThumbnail(Uri uri,大小大小,CancellationSignal信号)
因此您的代码将如下所示:
Uri mUri = ...; // Your Uri
Size mSize = new Size(96,96);
CancellationSignal ca = new CancellationSignal();
Bitmap bitmapThumbnail = getContentResolver().loadThumbnail(mUri, mSize, ca);
答案 1 :(得分:0)
//You can use this
val bitmapThumbnail = ThumbnailUtils.createVideoThumbnail(
File(filePath),
Size(120, 120),
null)