gpt4 book ai didi

Android createVideoThumbnail 返回 null,但在内部抛出运行时异常

转载 作者:行者123 更新时间:2023-11-29 23:49:42 28 4
gpt4 key购买 nike

当我在我的 AndroidManifest.xml 和 gradle build 中将 SDK 从 23 升级到 26 时发生了这个错误。认为这可能与通过 Intent 使用外部应用程序(例如将文件传递给相机)引起的 Uri.fromFile() 错误有关,但 SDK 中的源代码似乎并没有这样做。

调用看起来像这样并且路径是正确的:

Bitmap captured = ThumbnailUtils.createVideoThumbnail(videoSourcePath,MediaStore.Images.Thumbnails.FULL_SCREEN_KIND);

我已验证该文件存在并且 AndroidManifest.xml 具有外部存储权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

SDK 23 和 26 之间是否有我不知道的关于从 MP4 文件捕获位图的变化?

更新

所以真正的问题原来是图像的路径。如果您使用以下调用,当您从 Intent 返回数据(在本例中为视频捕获)时看起来像在 SDK 26 下:

videoSourcePath = data.getData().getPath();

它将不再正确返回视频的物理位置,而是附加在使路径无效的“external_files”上。

所以曾经返回的是:

/storage/emulated/0/myapp/mycustomer/newvideofile.mp4

现在是:

/external_files/myapp/mycustomer/newvideofile.mp4

我最终只使用了我发送的原始来源,而不是依赖 Intent 返回的内容。

最佳答案

您可以使用 Glide 来检索视频的缩略图。

// 1st: Generate image and set to imageview

Glide.with(context).asBitmap()
.load(filePathWithExtension)
.into(imageview);

// 2nd: Get Bitmap from Glide

GlideApp.with(context)
.asBitmap()
.load(filePathWithExtension)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
// You can use **resource**.
imageview.setImageBitmap(resource);
}
});

关于Android createVideoThumbnail 返回 null,但在内部抛出运行时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51033161/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com