summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorMartin Fietz <marf@hadiko-99-4.hadiko.uni-karlsruhe.de>2015-04-12 13:44:00 +0200
committerMartin Fietz <marf@hadiko-99-4.hadiko.uni-karlsruhe.de>2015-04-12 13:44:00 +0200
commit15d09932da213edbc43f5c0733108a51e1a397ad (patch)
tree1f367a6d401c2910014bbe1fc72473d77715c964 /core
parente5c03079b6e5e1f73bfccaf02fbdeba4560b7e89 (diff)
downloadAntennaPod-15d09932da213edbc43f5c0733108a51e1a397ad.zip
Coherent item cover order
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/PicassoProvider.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java72
3 files changed, 47 insertions, 39 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 0b637c682..4f2d5b204 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,13 +162,7 @@ public class PicassoProvider {
}
if (bitmap == null) {
- // check for fallback Uri
- String fallbackParam = data.uri.getQueryParameter(PicassoImageResource.PARAM_FALLBACK);
-
- if (fallbackParam != null) {
- Uri fallback = Uri.parse(fallbackParam);
- bitmap = decodeStreamFromFile(data, fallback);
- }
+ Log.wtf(TAG, "THIS SHOULD NEVER EVER HAPPEN!!");
}
return new Result(bitmap, Picasso.LoadedFrom.DISK);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
index 4fd7a184c..b74875175 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
@@ -315,10 +315,10 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
@Override
public Uri getImageUri() {
- if (hasItemImageDownloaded()) {
- return image.getImageUri();
- } else if (hasMedia()) {
+ if(media.hasEmbeddedPicture()) {
return media.getImageUri();
+ } else if (hasItemImageDownloaded()) {
+ return image.getImageUri();
} else if (feed != null) {
return feed.getImageUri();
} else {
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 93f826894..3dda291fa 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
@@ -2,9 +2,11 @@ package de.danoeh.antennapod.core.feed;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
+import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
+import android.util.Log;
import java.util.Date;
import java.util.List;
@@ -34,6 +36,7 @@ public class FeedMedia extends FeedFile implements Playable {
private String mime_type;
private volatile FeedItem item;
private Date playbackCompletionDate;
+ private boolean hasEmbeddedPicture;
/* Used for loading item when restoring from parcel. */
private long itemID;
@@ -50,6 +53,7 @@ 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;
@@ -61,12 +65,6 @@ public class FeedMedia extends FeedFile implements Playable {
? null : (Date) playbackCompletionDate.clone();
}
- public FeedMedia(long id, FeedItem item) {
- super();
- this.id = id;
- this.item = item;
- }
-
@Override
public String getHumanReadableIdentifier() {
if (item != null && item.getTitle() != null) {
@@ -227,18 +225,16 @@ public class FeedMedia extends FeedFile implements Playable {
return (this.position > 0);
}
- public FeedImage getImage() {
- if (item != null) {
- return (item.hasItemImageDownloaded()) ? item.getImage() : item.getFeed().getImage();
- }
- return null;
- }
-
@Override
public int describeContents() {
return 0;
}
+ public boolean hasEmbeddedPicture() {
+ Log.d(TAG, "hasEmbeddedPicture() -> " + hasEmbeddedPicture);
+ return this.hasEmbeddedPicture;
+ }
+
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(id);
@@ -415,28 +411,46 @@ public class FeedMedia extends FeedFile implements Playable {
@Override
public Uri getImageUri() {
- final Uri feedImgUri = getFeedImageUri();
-
- if (localFileAvailable()) {
+ if (hasEmbeddedPicture) {
Uri.Builder builder = new Uri.Builder();
- builder.scheme(SCHEME_MEDIA)
- .encodedPath(getLocalMediaUrl());
- if (feedImgUri != null) {
- builder.appendQueryParameter(PARAM_FALLBACK, feedImgUri.toString());
- }
+ builder.scheme(SCHEME_MEDIA).encodedPath(getLocalMediaUrl());
return builder.build();
- } else if (item.hasItemImageDownloaded()) {
- return item.getImage().getImageUri();
} else {
- return feedImgUri;
+ return item.getImageUri();
}
}
- private Uri getFeedImageUri() {
- if (item != null && item.getFeed() != null) {
- return item.getFeed().getImageUri();
- } else {
- return null;
+ @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() {
+ Log.d(TAG, "checkEmbeddedPicture()");
+ if (!localFileAvailable()) {
+ hasEmbeddedPicture = false;
+ return;
+ }
+ MediaMetadataRetriever mmr = new MediaMetadataRetriever();
+ try {
+ mmr.setDataSource(getLocalMediaUrl());
+ byte[] image = mmr.getEmbeddedPicture();
+ if(image != null) {
+ hasEmbeddedPicture = true;
+ }
+ else {
+ hasEmbeddedPicture = false;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ hasEmbeddedPicture = false;
}
}
}