如何在Android API 29中获取缩略图

时间:2019-12-04 20:41:50

标签: android

尝试从视频中获取缩略图。在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。告诉我如何使用它。

2 个答案:

答案 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)