diff options
Diffstat (limited to 'src/de/danoeh/antennapod/asynctask')
-rw-r--r-- | src/de/danoeh/antennapod/asynctask/PicassoImageResource.java | 12 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/asynctask/PicassoProvider.java | 12 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/PicassoImageResource.java b/src/de/danoeh/antennapod/asynctask/PicassoImageResource.java index 84179cfcb..26f9d9278 100644 --- a/src/de/danoeh/antennapod/asynctask/PicassoImageResource.java +++ b/src/de/danoeh/antennapod/asynctask/PicassoImageResource.java @@ -18,8 +18,20 @@ public interface PicassoImageResource { */ public static final String SCHEME_MEDIA = "media"; + + /** + * Parameter key for an encoded fallback Uri. This Uri MUST point to a local image file + */ + public static final String PARAM_FALLBACK = "fallback"; + /** * Returns a Uri to the image or null if no image is available. + * <p/> + * The Uri can either be an HTTP-URL, a URL pointing to a local image file or + * a non-image file (see SCHEME_MEDIA for more details). + * <p/> + * The Uri can also have an optional fallback-URL if loading the default URL + * failed (see PARAM_FALLBACK). */ public Uri getImageUri(); } diff --git a/src/de/danoeh/antennapod/asynctask/PicassoProvider.java b/src/de/danoeh/antennapod/asynctask/PicassoProvider.java index 9ecf87023..54aa3178c 100644 --- a/src/de/danoeh/antennapod/asynctask/PicassoProvider.java +++ b/src/de/danoeh/antennapod/asynctask/PicassoProvider.java @@ -127,14 +127,22 @@ public class PicassoProvider { mmr.setDataSource(uri.getPath()); byte[] data = mmr.getEmbeddedPicture(); mmr.release(); + if (data != null) { return new Response(new ByteArrayInputStream(data), true, data.length); } else { - return null; + + // check for fallback Uri + String fallback = Uri.decode(Uri.parse(uri.getQueryParameter(PicassoImageResource.PARAM_FALLBACK)).getPath()); + if (fallback != null) { + File imageFile = new File(fallback); + return new Response(new BufferedInputStream(new FileInputStream(imageFile)), true, imageFile.length()); + } else { + return null; + } } } } - return okHttpDownloader.load(uri, b); } } |