summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/asynctask
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2014-08-08 16:04:42 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2014-08-08 16:04:42 +0200
commitb69bd01fe752839b4e0f2e7a5ef9822324d6955d (patch)
tree98eaba3af1a1477777bbc7941ae5485957d0c149 /src/de/danoeh/antennapod/asynctask
parent8dc740bb8f5b6149d6d0c70a00d4f4831f33a427 (diff)
downloadAntennaPod-b69bd01fe752839b4e0f2e7a5ef9822324d6955d.zip
Use feed image if media file has no image
closes #484
Diffstat (limited to 'src/de/danoeh/antennapod/asynctask')
-rw-r--r--src/de/danoeh/antennapod/asynctask/PicassoImageResource.java12
-rw-r--r--src/de/danoeh/antennapod/asynctask/PicassoProvider.java12
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);
}
}