diff options
author | Tom Hennen <TomHennen@users.noreply.github.com> | 2015-06-20 11:01:09 -0400 |
---|---|---|
committer | Tom Hennen <TomHennen@users.noreply.github.com> | 2015-06-20 11:01:09 -0400 |
commit | 63231a6e474c9dec22a99d4c58fc031ef50af7a7 (patch) | |
tree | ea5815fa2db96677351e50aebe87672c1836dc27 /core | |
parent | ec4ed747b6de9ab98d3ad31a0256a77b8e8cc25c (diff) | |
parent | c882e1b5df578e84338724ac4d95c2a291a669e0 (diff) | |
download | AntennaPod-63231a6e474c9dec22a99d4c58fc031ef50af7a7.zip |
Merge pull request #916 from AntennaPod/develop1.2.1
1.2.1 moved to production
Diffstat (limited to 'core')
3 files changed, 57 insertions, 20 deletions
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 4f2d5b204..09fe0d654 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 @@ -162,7 +162,13 @@ public class PicassoProvider { } if (bitmap == null) { - Log.wtf(TAG, "THIS SHOULD NEVER EVER HAPPEN!!"); + // this should never, happen, but sometimes it does, so fallback + // check for fallback Uri + String fallbackParam = data.uri.getQueryParameter(PicassoImageResource.PARAM_FALLBACK); + if (fallbackParam != null) { + Uri fallback = Uri.parse(fallbackParam); + bitmap = decodeStreamFromFile(data, fallback); + } } return new Result(bitmap, Picasso.LoadedFrom.DISK); @@ -266,6 +272,11 @@ public class PicassoProvider { @Override public Bitmap transform(Bitmap source) { Bitmap result = fastblur(source, BLUR_RADIUS); + if (result == null) { + // just return the original + // for some reason we couldn't transform it. + return source; + } source.recycle(); return result; } @@ -305,8 +316,14 @@ public class PicassoProvider { // the following line: // // Stack Blur Algorithm by Mario Klingemann <mario@quasimondo.com> + Bitmap.Config config = sentBitmap.getConfig(); + if (config == null) { + // Sometimes the config can be null, in those cases + // we don't do a transform. + return null; + } - Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); + Bitmap bitmap = sentBitmap.copy(config, true); if (radius < 1) { return (null); diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java index f875eb812..ee05020cc 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java @@ -35,7 +35,7 @@ public class FeedMedia extends FeedFile implements Playable { private String mime_type; private volatile FeedItem item; private Date playbackCompletionDate; - private boolean hasEmbeddedPicture; + private Boolean hasEmbeddedPicture; /* Used for loading item when restoring from parcel. */ private long itemID; @@ -52,7 +52,6 @@ public class FeedMedia extends FeedFile implements Playable { long size, String mime_type, String file_url, String download_url, boolean downloaded, Date playbackCompletionDate, int played_duration) { super(file_url, download_url, downloaded); - checkEmbeddedPicture(); this.id = id; this.item = item; this.duration = duration; @@ -230,7 +229,12 @@ public class FeedMedia extends FeedFile implements Playable { } public boolean hasEmbeddedPicture() { - return this.hasEmbeddedPicture; + return false; + // TODO: reenable! + //if(hasEmbeddedPicture == null) { + // checkEmbeddedPicture(); + //} + //return hasEmbeddedPicture; } @Override @@ -409,9 +413,16 @@ public class FeedMedia extends FeedFile implements Playable { @Override public Uri getImageUri() { - if (hasEmbeddedPicture) { + if (hasEmbeddedPicture()) { Uri.Builder builder = new Uri.Builder(); builder.scheme(SCHEME_MEDIA).encodedPath(getLocalMediaUrl()); + + if (item != null && item.getFeed() != null) { + final Uri feedImgUri = item.getFeed().getImageUri(); + if (feedImgUri != null) { + builder.appendQueryParameter(PARAM_FALLBACK, feedImgUri.toString()); + } + } return builder.build(); } else { return item.getImageUri(); @@ -421,18 +432,16 @@ public class FeedMedia extends FeedFile implements Playable { @Override public void setDownloaded(boolean downloaded) { super.setDownloaded(downloaded); - checkEmbeddedPicture(); } @Override public void setFile_url(String file_url) { super.setFile_url(file_url); - checkEmbeddedPicture(); } private void checkEmbeddedPicture() { if (!localFileAvailable()) { - hasEmbeddedPicture = false; + hasEmbeddedPicture = Boolean.FALSE; return; } MediaMetadataRetriever mmr = new MediaMetadataRetriever(); @@ -440,14 +449,13 @@ public class FeedMedia extends FeedFile implements Playable { mmr.setDataSource(getLocalMediaUrl()); byte[] image = mmr.getEmbeddedPicture(); if(image != null) { - hasEmbeddedPicture = true; - } - else { - hasEmbeddedPicture = false; + hasEmbeddedPicture = Boolean.TRUE; + } else { + hasEmbeddedPicture = Boolean.FALSE; } } catch (Exception e) { e.printStackTrace(); - hasEmbeddedPicture = false; + hasEmbeddedPicture = Boolean.FALSE; } } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java index 4780098e0..6fabf9005 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java @@ -9,9 +9,9 @@ import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; +import android.text.TextUtils; import android.util.Log; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import java.util.Arrays; @@ -435,7 +435,7 @@ public class PodDBAdapter { values.put(KEY_IS_PAGED, feed.isPaged()); values.put(KEY_NEXT_PAGE_LINK, feed.getNextPageLink()); if(feed.getItemFilter() != null && feed.getItemFilter().getValues().length > 0) { - values.put(KEY_HIDE, StringUtils.join(feed.getItemFilter().getValues(), ",")); + values.put(KEY_HIDE, TextUtils.join( ",", feed.getItemFilter().getValues())); } else { values.put(KEY_HIDE, ""); } @@ -465,8 +465,8 @@ public class PodDBAdapter { public void setFeedItemFilter(long feedId, List<String> filterValues) { ContentValues values = new ContentValues(); - values.put(KEY_HIDE, StringUtils.join(filterValues, ",")); - Log.d(TAG, StringUtils.join(filterValues, ",")); + values.put(KEY_HIDE, TextUtils.join(",", filterValues)); + Log.d(TAG, TextUtils.join(",", filterValues)); db.update(TABLE_NAME_FEEDS, values, KEY_ID + "=?", new String[]{String.valueOf(feedId)}); } @@ -843,7 +843,7 @@ public class PodDBAdapter { ContentValues values = new ContentValues(); values.put(KEY_AUTO_DOWNLOAD, autoDownload); db.update(TABLE_NAME_FEED_ITEMS, values, KEY_ID + "=?", - new String[] { String.valueOf(feedItem.getId()) } ); + new String[]{String.valueOf(feedItem.getId())}); } public long getDownloadLogSize() { @@ -1294,9 +1294,21 @@ public class PodDBAdapter { } public final LongIntMap getNumberOfUnreadFeedItems(long... feedIds) { + // work around TextUtils.join wanting only boxed items + // and StringUtils.join() causing NoSuchMethodErrors on MIUI + StringBuilder builder = new StringBuilder(); + for (long id : feedIds) { + builder.append(id); + builder.append(','); + } + if (feedIds.length > 0) { + // there's an extra ',', get rid of it + builder.deleteCharAt(builder.length() - 1); + } + final String query = "SELECT " + KEY_FEED + ", COUNT(" + KEY_ID + ") AS count " + " FROM " + TABLE_NAME_FEED_ITEMS - + " WHERE " + KEY_FEED + " IN (" + StringUtils.join(feedIds, ',') + ") " + + " WHERE " + KEY_FEED + " IN (" + builder.toString() + ") " + " AND " + KEY_READ + " = 0" + " GROUP BY " + KEY_FEED; Cursor c = db.rawQuery(query, null); |