summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-01-13 22:48:58 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2013-01-13 22:48:58 +0100
commit1d8107827caf5e8c1a4fff14bbce57db9016549e (patch)
treefe8860edc6090bdac04b85dea5f59b2518b7dfd3 /src/de/danoeh/antennapod
parent7d44a549bca89e320b1e2b2bd6b8ac22aee2de5b (diff)
downloadAntennaPod-1d8107827caf5e8c1a4fff14bbce57db9016549e.zip
PlaybackController now checks if episode exists when the restoring last
played episode.
Diffstat (limited to 'src/de/danoeh/antennapod')
-rw-r--r--src/de/danoeh/antennapod/feed/FeedFile.java12
-rw-r--r--src/de/danoeh/antennapod/feed/FeedManager.java13
-rw-r--r--src/de/danoeh/antennapod/util/PlaybackController.java41
3 files changed, 40 insertions, 26 deletions
diff --git a/src/de/danoeh/antennapod/feed/FeedFile.java b/src/de/danoeh/antennapod/feed/FeedFile.java
index 305d58c1b..1d7a135d4 100644
--- a/src/de/danoeh/antennapod/feed/FeedFile.java
+++ b/src/de/danoeh/antennapod/feed/FeedFile.java
@@ -1,5 +1,7 @@
package de.danoeh.antennapod.feed;
+import java.io.File;
+
/** Represents a component of a Feed that has to be downloaded */
public abstract class FeedFile extends FeedComponent {
@@ -52,6 +54,16 @@ public abstract class FeedFile extends FeedComponent {
}
return false;
}
+
+ /** Returns true if the file exists at file_url. */
+ public boolean fileExists() {
+ if (file_url == null) {
+ return false;
+ } else {
+ File f = new File(file_url);
+ return f.exists();
+ }
+ }
public String getFile_url() {
return file_url;
diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java
index 597936e5a..3e5e838b0 100644
--- a/src/de/danoeh/antennapod/feed/FeedManager.java
+++ b/src/de/danoeh/antennapod/feed/FeedManager.java
@@ -124,18 +124,11 @@ public class FeedManager {
boolean startWhenPrepared, boolean shouldStream) {
try {
if (!shouldStream) {
- if (media.getFile_url() == null) {
- throw new MediaFileNotFoundException("Feed URL was null",
+ if (media.fileExists() == false) {
+ throw new MediaFileNotFoundException(
+ "No episode was found at " + media.getFile_url(),
media);
- } else {
- File f = new File(media.getFile_url());
- if (!f.exists() || !f.canRead()) {
- throw new MediaFileNotFoundException(
- "No episode was found at "
- + media.getFile_url(), media);
- }
}
-
}
// Start playback Service
Intent launchIntent = new Intent(context, PlaybackService.class);
diff --git a/src/de/danoeh/antennapod/util/PlaybackController.java b/src/de/danoeh/antennapod/util/PlaybackController.java
index 7d732f042..1a61555ff 100644
--- a/src/de/danoeh/antennapod/util/PlaybackController.java
+++ b/src/de/danoeh/antennapod/util/PlaybackController.java
@@ -28,6 +28,7 @@ import android.widget.TextView;
import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.feed.Chapter;
+import de.danoeh.antennapod.feed.FeedManager;
import de.danoeh.antennapod.feed.FeedMedia;
import de.danoeh.antennapod.service.PlaybackService;
import de.danoeh.antennapod.service.PlayerStatus;
@@ -188,23 +189,31 @@ public abstract class PlaybackController {
long feedId = prefs.getLong(PlaybackService.PREF_LAST_PLAYED_FEED_ID,
-1);
if (mediaId != -1 && feedId != -1) {
- Intent serviceIntent = new Intent(activity, PlaybackService.class);
- serviceIntent.putExtra(PlaybackService.EXTRA_FEED_ID, feedId);
- serviceIntent.putExtra(PlaybackService.EXTRA_MEDIA_ID, mediaId);
- serviceIntent.putExtra(PlaybackService.EXTRA_START_WHEN_PREPARED,
- false);
- serviceIntent.putExtra(PlaybackService.EXTRA_PREPARE_IMMEDIATELY,
- false);
- serviceIntent
- .putExtra(PlaybackService.EXTRA_SHOULD_STREAM, prefs
- .getBoolean(PlaybackService.PREF_LAST_IS_STREAM,
- true));
- return serviceIntent;
- } else {
- if (AppConfig.DEBUG)
- Log.d(TAG, "No last played media found");
- return null;
+ FeedMedia media = FeedManager.getInstance().getFeedMedia(mediaId);
+ if (media != null) {
+ Intent serviceIntent = new Intent(activity,
+ PlaybackService.class);
+ serviceIntent.putExtra(PlaybackService.EXTRA_FEED_ID, feedId);
+ serviceIntent.putExtra(PlaybackService.EXTRA_MEDIA_ID, mediaId);
+ serviceIntent.putExtra(
+ PlaybackService.EXTRA_START_WHEN_PREPARED, false);
+ serviceIntent.putExtra(
+ PlaybackService.EXTRA_PREPARE_IMMEDIATELY, false);
+ boolean fileExists = media.fileExists();
+ boolean lastIsStream = prefs.getBoolean(
+ PlaybackService.PREF_LAST_IS_STREAM, true);
+ if (!fileExists && !lastIsStream) {
+ FeedManager.getInstance().notifyMissingFeedMediaFile(
+ activity, media);
+ }
+ serviceIntent.putExtra(PlaybackService.EXTRA_SHOULD_STREAM,
+ lastIsStream || !fileExists);
+ return serviceIntent;
+ }
}
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "No last played media found");
+ return null;
}
public abstract void setupGUI();