android - 如何在 Android API 29 中获取缩略图
问题描述
试图从视频中获取缩略图。在 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。告诉我如何使用它。
解决方案
createVideoThumbnail
更改为:
public static Bitmap createVideoThumbnail (String filePath, int kind)
至
public static Bitmap createVideoThumbnail (File file, Size size, 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
,它接受 aUri
而不是File
对象,如下所示:
public Bitmap loadThumbnail (Uri uri, Size size, CancellationSignal 信号)
因此,您的代码将如下所示:
Uri mUri = ...; // Your Uri
Size mSize = new Size(96,96);
CancellationSignal ca = new CancellationSignal();
Bitmap bitmapThumbnail = getContentResolver().loadThumbnail(mUri, mSize, ca);
推荐阅读
- r - 在 R 中合并数据集
- json - JSON 数据的 PostgreSQL 平均值
- javascript - 使用 Numeral.js 格式化字符串
- python - Python Selenium selenium.common.exceptions.StaleElementReferenceException
- java - Spring MVC:如何在反序列化包含重复对象定义的 JSON 字符串时创建对象的单个实例
- c - C中三维数组的问题
- java - 为测试正确配置 JUNIT5
- azure-active-directory - 用于逻辑应用登录帐户的 Azure on Prem 数据网关
- python - 在 FastAPI 中使用 Depends 与仅调用依赖函数/类相比有什么优势?
- mongodb - MongoDB .NET Group by 与整个对象的列表结果