Java 视频位图解码器不';t接受int(Android Glide)

Java 视频位图解码器不';t接受int(Android Glide),java,android,kotlin,bitmap,android-glide,Java,Android,Kotlin,Bitmap,Android Glide,我试图使用从中找到的以下代码在特定时间保存视频的缩略图,但VideoBitmapDecoder不接受int参数。它只接受上下文或位图池。我该怎么办 BitmapPool bitmapPool = Glide.get(getApplicationContext()).getBitmapPool(); int microSecond = 6000000;// 6th second as an example VideoBitmapDecoder videoBitmapDecoder = new

我试图使用从中找到的以下代码在特定时间保存视频的缩略图,但VideoBitmapDecoder不接受int参数。它只接受上下文或位图池。我该怎么办

BitmapPool bitmapPool = Glide.get(getApplicationContext()).getBitmapPool(); 
int microSecond = 6000000;// 6th second as an example 
VideoBitmapDecoder videoBitmapDecoder = new VideoBitmapDecoder(microSecond); 
FileDescriptorBitmapDecoder fileDescriptorBitmapDecoder = new FileDescriptorBitmapDecoder(videoBitmapDecoder, bitmapPool, DecodeFormat.PREFER_ARGB_8888); 
Glide.with(getApplicationContext()) .load(yourUri)
  .asBitmap()
  .override(50,50)//
  .videoDecoder(fileDescriptorBitmapDecoder)       .into(yourImageView);

根本原因:在Glide v4中,他们更改了API,因此我将为您提供两种解决问题的方法。

选项1:
app.gradle
文件中保留当前代码并更改滑动依赖项版本

// implementation 'com.github.bumptech.glide:glide:4.8.0'
// annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
implementation 'com.github.bumptech.glide:glide:3.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:3.8.0'
选项2:
app.gradle
文件中保留当前滑动依赖项,并更改代码

int microSecond = 6000000;// 6th second as an example
RequestOptions options = new RequestOptions().frame(microSecond).override(50, 50);

Glide.with(getApplicationContext())
        .asBitmap()
        .load(videoUri)
        .apply(options)
        .into(yourImageView);
更新:如果要处理位图,则不在视图上显示

Glide.with(getApplicationContext())
                .asBitmap()
                .load(videoUri)
                .apply(options)
                .listener(new RequestListener<Bitmap>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(Bitmap bitmap, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                        // TODO: Process your bitmap here
                        return false;
                    }
                })
                .submit();
Glide.with(getApplicationContext())
.asBitmap()
.load(视频URI)
.应用(选项)
.listener(新的RequestListener(){
@凌驾
public boolean onload失败(@Nullable glide,对象模型,目标,boolean isFirstResource){
返回false;
}
@凌驾
公共布尔onResourceReady(位图、对象模型、目标、数据源数据源、布尔isFirstResource){
//TODO:在此处处理位图
返回false;
}
})
.submit();

谢谢你的回答,但我没有
asBitmap()
方法@Javad查看我的更新答案,只需更改asBitmap方法的顺序。是的,非常感谢它现在正在工作。还有一个问题,我不想在图像视图中显示这个缩略图。我想将其位图保存在数组列表中。这是什么方法?谢谢老兄这为我节省了很多时间