FileDescriptorUriLoader.java revision b5419dc08eb0a0f82821d774435720e5a31bc936
1package com.bumptech.glide.load.model.file_descriptor;
2
3import android.content.Context;
4import android.net.Uri;
5import android.os.ParcelFileDescriptor;
6import com.bumptech.glide.Glide;
7import com.bumptech.glide.load.model.GenericLoaderFactory;
8import com.bumptech.glide.load.model.GlideUrl;
9import com.bumptech.glide.load.model.ModelLoader;
10import com.bumptech.glide.load.model.ModelLoaderFactory;
11import com.bumptech.glide.load.model.UriLoader;
12import com.bumptech.glide.load.data.DataFetcher;
13import com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher;
14
15/**
16 * A {@link ModelLoader} For translating {@link Uri} models for local uris into {@link ParcelFileDescriptor} data.
17 */
18public class FileDescriptorUriLoader extends UriLoader<ParcelFileDescriptor> implements FileDescriptorModelLoader<Uri> {
19
20    /**
21     * The default factory for {@link com.bumptech.glide.load.model.file_descriptor.FileDescriptorUriLoader}s.
22     */
23    public static class Factory implements ModelLoaderFactory<Uri, ParcelFileDescriptor> {
24        @Override
25        public ModelLoader<Uri, ParcelFileDescriptor> build(Context context, GenericLoaderFactory factories) {
26            return new FileDescriptorUriLoader(context, factories.buildModelLoader(GlideUrl.class,
27                    ParcelFileDescriptor.class, context));
28        }
29
30        @Override
31        public void teardown() { }
32    }
33
34    public FileDescriptorUriLoader(Context context) {
35        this(context, Glide.buildFileDescriptorModelLoader(GlideUrl.class, context));
36    }
37
38    public FileDescriptorUriLoader(Context context, ModelLoader<GlideUrl, ParcelFileDescriptor> urlLoader) {
39        super(context, urlLoader);
40    }
41
42    @Override
43    protected DataFetcher<ParcelFileDescriptor> getLocalUriFetcher(Context context, Uri uri) {
44        return new FileDescriptorLocalUriFetcher(context, uri);
45    }
46}
47