summaryrefslogtreecommitdiff
path: root/src/de/podfetcher
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/podfetcher')
-rw-r--r--src/de/podfetcher/service/PlaybackService.java20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/de/podfetcher/service/PlaybackService.java b/src/de/podfetcher/service/PlaybackService.java
index 7958e0c43..12effb324 100644
--- a/src/de/podfetcher/service/PlaybackService.java
+++ b/src/de/podfetcher/service/PlaybackService.java
@@ -392,27 +392,33 @@ public class PlaybackService extends Service {
@Override
public void onCompletion(MediaPlayer mp) {
Log.d(TAG, "Playback completed");
+ // Save state
positionSaver.cancel(true);
media.setPosition(0);
manager.markItemRead(PlaybackService.this, media.getItem(), true);
- if (manager.isInQueue(media.getItem())) {
+ boolean isInQueue = manager.isInQueue(media.getItem());
+ if (isInQueue) {
manager.removeQueueItem(PlaybackService.this, media.getItem());
}
manager.setFeedMedia(PlaybackService.this, media);
+ // Prepare for playing next item
+ boolean followQueue = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext())
+ .getBoolean(PodcastApp.PREF_FOLLOW_QUEUE, false);
FeedItem nextItem = manager.getFirstQueueItem();
- if (nextItem == null) {
- Log.d(TAG, "No more items in queue");
- stopWidgetUpdater();
- setStatus(PlayerStatus.STOPPED);
- stopForeground(true);
- } else {
+ if (isInQueue && followQueue && nextItem != null) {
Log.d(TAG, "Loading next item in queue");
media = nextItem.getMedia();
feed = nextItem.getFeed();
shouldStream = !media.isDownloaded();
resetVideoSurface();
sendNotificationBroadcast(NOTIFICATION_TYPE_RELOAD, 0);
+ } else {
+ Log.d(TAG, "Stopping playback");
+ stopWidgetUpdater();
+ setStatus(PlayerStatus.STOPPED);
+ stopForeground(true);
}
}