From 40ef24d8ad739ae375089530865149191f2b44f0 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Wed, 12 Nov 2014 12:08:31 +0100 Subject: Made sure that fallback URL is used if MMR fails --- .../antennapod/core/asynctask/PicassoProvider.java | 27 ++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'core/src') diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/PicassoProvider.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/PicassoProvider.java index 6d9353a93..1ed29c23a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/PicassoProvider.java +++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/PicassoProvider.java @@ -76,19 +76,11 @@ public class PicassoProvider { private static class MediaRequestHandler extends RequestHandler { - final MediaMetadataRetriever mmr; final Context context; public MediaRequestHandler(Context context) { super(); this.context = context; - mmr = new MediaMetadataRetriever(); - } - - @Override - protected void finalize() throws Throwable { - super.finalize(); - mmr.release(); } @Override @@ -99,11 +91,22 @@ public class PicassoProvider { @Override public Result load(Request data) throws IOException { Bitmap bitmap = null; - mmr.setDataSource(data.uri.getPath()); - byte[] image = mmr.getEmbeddedPicture(); - if (image != null) { - bitmap = decodeStreamFromByteArray(data, image); + MediaMetadataRetriever mmr = null; + try { + mmr = new MediaMetadataRetriever(); + mmr.setDataSource(data.uri.getPath()); + byte[] image = mmr.getEmbeddedPicture(); + if (image != null) { + bitmap = decodeStreamFromByteArray(data, image); + } + } catch (RuntimeException e) { + Log.e(TAG, "Failed to decode image in media file", e); + } finally { + if (mmr != null) { + mmr.release(); + } } + if (bitmap == null) { // check for fallback Uri String fallbackParam = data.uri.getQueryParameter(PicassoImageResource.PARAM_FALLBACK); -- cgit v1.2.3