package com.bumptech.glide.load.model.file_descriptor; import android.content.Context; import android.net.Uri; import android.os.ParcelFileDescriptor; import com.bumptech.glide.Glide; import com.bumptech.glide.load.model.GenericLoaderFactory; import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.ModelLoader; import com.bumptech.glide.load.model.ModelLoaderFactory; import com.bumptech.glide.load.model.UriLoader; import com.bumptech.glide.load.data.DataFetcher; import com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher; /** * A {@link ModelLoader} For translating {@link Uri} models for local uris into {@link ParcelFileDescriptor} resources. */ public class FileDescriptorUriLoader extends UriLoader<ParcelFileDescriptor> implements FileDescriptorModelLoader<Uri> { public static class Factory implements ModelLoaderFactory<Uri, ParcelFileDescriptor> { @Override public ModelLoader<Uri, ParcelFileDescriptor> build(Context context, GenericLoaderFactory factories) { return new FileDescriptorUriLoader(context, factories.buildModelLoader(GlideUrl.class, ParcelFileDescriptor.class, context)); } @Override public void teardown() { } } public FileDescriptorUriLoader(Context context) { this(context, Glide.buildFileDescriptorModelLoader(GlideUrl.class, context)); } public FileDescriptorUriLoader(Context context, ModelLoader<GlideUrl, ParcelFileDescriptor> urlLoader) { super(context, urlLoader); } @Override protected DataFetcher<ParcelFileDescriptor> getLocalUriFetcher(Context context, Uri uri) { return new FileDescriptorLocalUriFetcher(context, uri); } }