summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/de/danoeh/antennapod/PodcastApp.java56
-rw-r--r--src/de/danoeh/antennapod/feed/FeedItem.java4
-rw-r--r--src/de/danoeh/antennapod/feed/FeedManager.java54
-rw-r--r--src/de/danoeh/antennapod/preferences/PlaybackPreferences.java173
-rw-r--r--src/de/danoeh/antennapod/service/PlaybackService.java72
-rw-r--r--src/de/danoeh/antennapod/util/PlaybackController.java9
6 files changed, 230 insertions, 138 deletions
diff --git a/src/de/danoeh/antennapod/PodcastApp.java b/src/de/danoeh/antennapod/PodcastApp.java
index d5ec9fede..9a3332788 100644
--- a/src/de/danoeh/antennapod/PodcastApp.java
+++ b/src/de/danoeh/antennapod/PodcastApp.java
@@ -1,20 +1,16 @@
package de.danoeh.antennapod;
import android.app.Application;
-import android.content.SharedPreferences;
import android.content.res.Configuration;
-import android.preference.PreferenceManager;
import android.util.Log;
import de.danoeh.antennapod.asynctask.ImageLoader;
import de.danoeh.antennapod.feed.EventDistributor;
import de.danoeh.antennapod.feed.FeedManager;
-import de.danoeh.antennapod.feed.FeedMedia;
+import de.danoeh.antennapod.preferences.PlaybackPreferences;
import de.danoeh.antennapod.preferences.UserPreferences;
-import de.danoeh.antennapod.service.PlaybackService;
/** Main application class. */
-public class PodcastApp extends Application implements
- SharedPreferences.OnSharedPreferenceChangeListener {
+public class PodcastApp extends Application {
private static final String TAG = "PodcastApp";
public static final String EXPORT_DIR = "export/";
@@ -23,8 +19,6 @@ public class PodcastApp extends Application implements
private static PodcastApp singleton;
- private static long currentlyPlayingMediaId;
-
public static PodcastApp getInstance() {
return singleton;
}
@@ -34,13 +28,9 @@ public class PodcastApp extends Application implements
super.onCreate();
singleton = this;
LOGICAL_DENSITY = getResources().getDisplayMetrics().density;
- SharedPreferences prefs = PreferenceManager
- .getDefaultSharedPreferences(this);
- currentlyPlayingMediaId = prefs.getLong(
- PlaybackService.PREF_CURRENTLY_PLAYING_MEDIA,
- PlaybackService.NO_MEDIA_PLAYING);
- prefs.registerOnSharedPreferenceChangeListener(this);
+
UserPreferences.createInstance(this);
+ PlaybackPreferences.createInstance(this);
EventDistributor.getInstance();
FeedManager manager = FeedManager.getInstance();
manager.loadDBData(getApplicationContext());
@@ -53,48 +43,10 @@ public class PodcastApp extends Application implements
ImageLoader.getInstance().wipeImageCache();
}
- /**
- * Listens for changes in the 'update intervall'-preference and changes the
- * alarm if necessary.
- */
- @Override
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
- String key) {
- if (AppConfig.DEBUG)
- Log.d(TAG, "Registered change of application preferences");
-
- if (key.equals(PlaybackService.PREF_LAST_PLAYED_ID)) {
- if (AppConfig.DEBUG)
- Log.d(TAG, "PREF_LAST_PLAYED_ID changed");
- long mediaId = sharedPreferences.getLong(
- PlaybackService.PREF_AUTODELETE_MEDIA_ID, -1);
- if (mediaId != -1) {
- FeedManager manager = FeedManager.getInstance();
- FeedMedia media = manager.getFeedMedia(mediaId);
- if (media != null) {
- manager.autoDeleteIfPossible(this, media);
- }
- }
- } else if (key.equals(PlaybackService.PREF_CURRENTLY_PLAYING_MEDIA)) {
- long id = sharedPreferences.getLong(
- PlaybackService.PREF_CURRENTLY_PLAYING_MEDIA,
- PlaybackService.NO_MEDIA_PLAYING);
- if (AppConfig.DEBUG)
- Log.d(TAG, "Currently playing media set to " + id);
- if (id != currentlyPlayingMediaId) {
- currentlyPlayingMediaId = id;
- }
- }
- }
-
public static float getLogicalDensity() {
return LOGICAL_DENSITY;
}
- public static long getCurrentlyPlayingMediaId() {
- return currentlyPlayingMediaId;
- }
-
public boolean isLargeScreen() {
return (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE
|| (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE;
diff --git a/src/de/danoeh/antennapod/feed/FeedItem.java b/src/de/danoeh/antennapod/feed/FeedItem.java
index 06fdc4292..c9449fadd 100644
--- a/src/de/danoeh/antennapod/feed/FeedItem.java
+++ b/src/de/danoeh/antennapod/feed/FeedItem.java
@@ -4,7 +4,7 @@ import java.lang.ref.SoftReference;
import java.util.Date;
import java.util.List;
-import de.danoeh.antennapod.PodcastApp;
+import de.danoeh.antennapod.preferences.PlaybackPreferences;
/**
* Data Object for a XML message
@@ -234,7 +234,7 @@ public class FeedItem extends FeedComponent {
private boolean isPlaying() {
if (media != null) {
- if (PodcastApp.getCurrentlyPlayingMediaId() == media.getId()) {
+ if (PlaybackPreferences.getCurrentlyPlayingMedia() == media.getId()) {
return true;
}
}
diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java
index 4f81f9d38..6a18113e3 100644
--- a/src/de/danoeh/antennapod/feed/FeedManager.java
+++ b/src/de/danoeh/antennapod/feed/FeedManager.java
@@ -20,6 +20,7 @@ import android.preference.PreferenceManager;
import android.util.Log;
import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.asynctask.DownloadStatus;
+import de.danoeh.antennapod.preferences.PlaybackPreferences;
import de.danoeh.antennapod.preferences.UserPreferences;
import de.danoeh.antennapod.service.PlaybackService;
import de.danoeh.antennapod.storage.DownloadRequestException;
@@ -34,10 +35,10 @@ import de.danoeh.antennapod.util.comparator.PlaybackCompletionDateComparator;
import de.danoeh.antennapod.util.exception.MediaFileNotFoundException;
/**
- * Singleton class that
- * - provides access to all Feeds and FeedItems and to several lists of FeedItems.
- * - provides methods for modifying the application's data
- * - takes care of updating the information stored in the database when something is modified
+ * Singleton class that - provides access to all Feeds and FeedItems and to
+ * several lists of FeedItems. - provides methods for modifying the
+ * application's data - takes care of updating the information stored in the
+ * database when something is modified
*
* An instance of this class can be retrieved via getInstance().
* */
@@ -153,11 +154,7 @@ public class FeedManager {
}
} catch (MediaFileNotFoundException e) {
e.printStackTrace();
- SharedPreferences prefs = PreferenceManager
- .getDefaultSharedPreferences(context);
- final long lastPlayedId = prefs.getLong(
- PlaybackService.PREF_LAST_PLAYED_ID, -1);
- if (lastPlayedId == media.getId()) {
+ if (PlaybackPreferences.getLastPlayedId() == media.getId()) {
context.sendBroadcast(new Intent(
PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
}
@@ -179,14 +176,12 @@ public class FeedManager {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
- final long lastPlayedId = prefs.getLong(
- PlaybackService.PREF_LAST_PLAYED_ID, -1);
- if (media.getId() == lastPlayedId) {
+ if (media.getId() == PlaybackPreferences.getLastPlayedId()) {
SharedPreferences.Editor editor = prefs.edit();
- editor.putBoolean(PlaybackService.PREF_LAST_IS_STREAM, true);
+ editor.putBoolean(PlaybackPreferences.PREF_LAST_IS_STREAM, true);
editor.commit();
}
- if (lastPlayedId == media.getId()) {
+ if (PlaybackPreferences.getLastPlayedId() == media.getId()) {
context.sendBroadcast(new Intent(
PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
}
@@ -200,14 +195,12 @@ public class FeedManager {
public void deleteFeed(final Context context, final Feed feed) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context.getApplicationContext());
- long lastPlayedFeed = prefs.getLong(
- PlaybackService.PREF_LAST_PLAYED_FEED_ID, -1);
- if (lastPlayedFeed == feed.getId()) {
+ if (PlaybackPreferences.getLastPlayedFeedId() == feed.getId()) {
context.sendBroadcast(new Intent(
PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
SharedPreferences.Editor editor = prefs.edit();
- editor.putLong(PlaybackService.PREF_LAST_PLAYED_ID, -1);
- editor.putLong(PlaybackService.PREF_LAST_PLAYED_FEED_ID, -1);
+ editor.putLong(PlaybackPreferences.PREF_LAST_PLAYED_ID, -1);
+ editor.putLong(PlaybackPreferences.PREF_LAST_PLAYED_FEED_ID, -1);
editor.commit();
}
@@ -717,22 +710,19 @@ public class FeedManager {
.getDefaultSharedPreferences(context
.getApplicationContext());
if (UserPreferences.isAutoDelete()) {
- long lastPlayedId = prefs.getLong(
- PlaybackService.PREF_LAST_PLAYED_ID, -1);
- long autoDeleteId = prefs.getLong(
- PlaybackService.PREF_AUTODELETE_MEDIA_ID, -1);
- boolean playbackCompleted = prefs
- .getBoolean(
- PlaybackService.PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED,
- false);
- if ((media.getId() != lastPlayedId)
- && ((media.getId() != autoDeleteId) || (media.getId() == autoDeleteId && playbackCompleted))) {
+
+ if ((media.getId() != PlaybackPreferences.getLastPlayedId())
+ && ((media.getId() != PlaybackPreferences
+ .getAutoDeleteMediaId()) || (media.getId() == PlaybackPreferences
+ .getAutoDeleteMediaId() && PlaybackPreferences
+ .isAutoDeleteMediaPlaybackCompleted()))) {
if (AppConfig.DEBUG)
Log.d(TAG, "Performing auto-cleanup");
deleteFeedMedia(context, media);
SharedPreferences.Editor editor = prefs.edit();
- editor.putLong(PlaybackService.PREF_AUTODELETE_MEDIA_ID, -1);
+ editor.putLong(
+ PlaybackPreferences.PREF_AUTODELETE_MEDIA_ID, -1);
editor.commit();
} else {
if (AppConfig.DEBUG)
@@ -1456,8 +1446,8 @@ public class FeedManager {
}
/**
- * Searches the 'contentEncoded' field of FeedItems of a specific feed for a given
- * string.
+ * Searches the 'contentEncoded' field of FeedItems of a specific feed for a
+ * given string.
*
* @param feed
* The feed whose items should be searched.
diff --git a/src/de/danoeh/antennapod/preferences/PlaybackPreferences.java b/src/de/danoeh/antennapod/preferences/PlaybackPreferences.java
new file mode 100644
index 000000000..22167c62d
--- /dev/null
+++ b/src/de/danoeh/antennapod/preferences/PlaybackPreferences.java
@@ -0,0 +1,173 @@
+package de.danoeh.antennapod.preferences;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.util.Log;
+import de.danoeh.antennapod.AppConfig;
+import de.danoeh.antennapod.feed.FeedManager;
+import de.danoeh.antennapod.feed.FeedMedia;
+
+/**
+ * Provides access to preferences set by the playback service. A private
+ * instance of this class must first be instantiated via createInstance() or
+ * otherwise every public method will throw an Exception when called.
+ */
+public class PlaybackPreferences implements
+ SharedPreferences.OnSharedPreferenceChangeListener {
+ private static final String TAG = "PlaybackPreferences";
+
+ /** Contains the id of the media that was played last. */
+ public static final String PREF_LAST_PLAYED_ID = "de.danoeh.antennapod.preferences.lastPlayedId";
+
+ /** Contains the feed id of the last played item. */
+ public static final String PREF_LAST_PLAYED_FEED_ID = "de.danoeh.antennapod.preferences.lastPlayedFeedId";
+
+ /**
+ * ID of the media object that is currently being played. This preference is
+ * set to NO_MEDIA_PLAYING after playback has been completed and is set as
+ * soon as the 'play' button is pressed.
+ */
+ public static final String PREF_CURRENTLY_PLAYING_MEDIA = "de.danoeh.antennapod.preferences.currentlyPlayingMedia";
+
+ /** True if last played media was streamed. */
+ public static final String PREF_LAST_IS_STREAM = "de.danoeh.antennapod.preferences.lastIsStream";
+
+ /** True if last played media was a video. */
+ public static final String PREF_LAST_IS_VIDEO = "de.danoeh.antennapod.preferences.lastIsVideo";
+
+ /** True if playback of last played media has been completed. */
+ public static final String PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED = "de.danoeh.antennapod.preferences.lastPlaybackCompleted";
+
+ /**
+ * ID of the last played media which should be auto-deleted as soon as
+ * PREF_LAST_PLAYED_ID changes.
+ */
+ public static final String PREF_AUTODELETE_MEDIA_ID = "de.danoeh.antennapod.preferences.autoDeleteMediaId";
+
+ /** Value of PREF_CURRENTLY_PLAYING_MEDIA if no media is playing. */
+ public static final long NO_MEDIA_PLAYING = -1;
+
+ private long lastPlayedId;
+ private long lastPlayedFeedId;
+ private long currentlyPlayingMedia;
+ private boolean lastIsStream;
+ private boolean lastIsVideo;
+ private boolean autoDeleteMediaPlaybackCompleted;
+ private long autoDeleteMediaId;
+
+ private static PlaybackPreferences instance;
+ private Context context;
+
+ private PlaybackPreferences(Context context) {
+ this.context = context;
+ loadPreferences();
+ }
+
+ /**
+ * Sets up the UserPreferences class.
+ *
+ * @throws IllegalArgumentException
+ * if context is null
+ * */
+ public static void createInstance(Context context) {
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Creating new instance of UserPreferences");
+ if (context == null)
+ throw new IllegalArgumentException("Context must not be null");
+ instance = new PlaybackPreferences(context);
+
+ PreferenceManager.getDefaultSharedPreferences(context)
+ .registerOnSharedPreferenceChangeListener(instance);
+ }
+
+ private void loadPreferences() {
+ SharedPreferences sp = PreferenceManager
+ .getDefaultSharedPreferences(context);
+ lastPlayedId = sp.getLong(PREF_LAST_PLAYED_ID, -1);
+ lastPlayedFeedId = sp.getLong(PREF_LAST_PLAYED_FEED_ID, -1);
+ currentlyPlayingMedia = sp.getLong(PREF_CURRENTLY_PLAYING_MEDIA,
+ NO_MEDIA_PLAYING);
+ lastIsStream = sp.getBoolean(PREF_LAST_IS_STREAM, true);
+ lastIsVideo = sp.getBoolean(PREF_LAST_IS_VIDEO, false);
+ autoDeleteMediaPlaybackCompleted = sp.getBoolean(
+ PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED, false);
+ autoDeleteMediaId = sp.getLong(PREF_AUTODELETE_MEDIA_ID, -1);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
+ if (key.equals(PREF_LAST_PLAYED_ID)) {
+ lastPlayedId = sp.getLong(PREF_LAST_PLAYED_ID, -1);
+ long mediaId = sp.getLong(
+ PlaybackPreferences.PREF_AUTODELETE_MEDIA_ID, -1);
+ if (mediaId != -1) {
+ FeedManager manager = FeedManager.getInstance();
+ FeedMedia media = manager.getFeedMedia(mediaId);
+ if (media != null) {
+ manager.autoDeleteIfPossible(context, media);
+ }
+ }
+ } else if (key.equals(PREF_LAST_PLAYED_FEED_ID)) {
+ lastPlayedFeedId = sp.getLong(PREF_LAST_PLAYED_FEED_ID, -1);
+
+ } else if (key.equals(PREF_CURRENTLY_PLAYING_MEDIA)) {
+ currentlyPlayingMedia = sp
+ .getLong(PREF_CURRENTLY_PLAYING_MEDIA, -1);
+
+ } else if (key.equals(PREF_LAST_IS_STREAM)) {
+ lastIsStream = sp.getBoolean(PREF_LAST_IS_STREAM, true);
+
+ } else if (key.equals(PREF_LAST_IS_VIDEO)) {
+ lastIsVideo = sp.getBoolean(PREF_LAST_IS_VIDEO, false);
+
+ } else if (key.equals(PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED)) {
+ autoDeleteMediaPlaybackCompleted = sp.getBoolean(
+ PREF_AUTODELETE_MEDIA_ID, false);
+ } else if (key.equals(PREF_AUTODELETE_MEDIA_ID)) {
+ autoDeleteMediaId = sp.getLong(PREF_AUTODELETE_MEDIA_ID, -1);
+ }
+ }
+
+ private static void instanceAvailable() {
+ if (instance == null) {
+ throw new IllegalStateException(
+ "UserPreferences was used before being set up");
+ }
+ }
+
+ public static long getLastPlayedId() {
+ instanceAvailable();
+ return instance.lastPlayedId;
+ }
+
+ public static long getAutoDeleteMediaId() {
+ return instance.autoDeleteMediaId;
+ }
+
+ public static long getLastPlayedFeedId() {
+ instanceAvailable();
+ return instance.lastPlayedFeedId;
+ }
+
+ public static long getCurrentlyPlayingMedia() {
+ instanceAvailable();
+ return instance.currentlyPlayingMedia;
+ }
+
+ public static boolean isLastIsStream() {
+ instanceAvailable();
+ return instance.lastIsStream;
+ }
+
+ public static boolean isLastIsVideo() {
+ instanceAvailable();
+ return instance.lastIsVideo;
+ }
+
+ public static boolean isAutoDeleteMediaPlaybackCompleted() {
+ instanceAvailable();
+ return instance.autoDeleteMediaPlaybackCompleted;
+ }
+
+}
diff --git a/src/de/danoeh/antennapod/service/PlaybackService.java b/src/de/danoeh/antennapod/service/PlaybackService.java
index b11548d88..7eaff0578 100644
--- a/src/de/danoeh/antennapod/service/PlaybackService.java
+++ b/src/de/danoeh/antennapod/service/PlaybackService.java
@@ -45,6 +45,7 @@ import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.FeedManager;
import de.danoeh.antennapod.feed.FeedMedia;
import de.danoeh.antennapod.feed.MediaType;
+import de.danoeh.antennapod.preferences.PlaybackPreferences;
import de.danoeh.antennapod.preferences.UserPreferences;
import de.danoeh.antennapod.receiver.MediaButtonReceiver;
import de.danoeh.antennapod.receiver.PlayerWidget;
@@ -56,28 +57,6 @@ public class PlaybackService extends Service {
/** Logging tag */
private static final String TAG = "PlaybackService";
- /** Contains the id of the media that was played last. */
- public static final String PREF_LAST_PLAYED_ID = "de.danoeh.antennapod.preferences.lastPlayedId";
- /** Contains the feed id of the last played item. */
- public static final String PREF_LAST_PLAYED_FEED_ID = "de.danoeh.antennapod.preferences.lastPlayedFeedId";
- /**
- * ID of the media object that is currently being played. This preference is
- * set to NO_MEDIA_PLAYING after playback has been completed and is set as
- * soon as the 'play' button is pressed.
- */
- public static final String PREF_CURRENTLY_PLAYING_MEDIA = "de.danoeh.antennapod.preferences.currentlyPlayingMedia";
- /** True if last played media was streamed. */
- public static final String PREF_LAST_IS_STREAM = "de.danoeh.antennapod.preferences.lastIsStream";
- /** True if last played media was a video. */
- public static final String PREF_LAST_IS_VIDEO = "de.danoeh.antennapod.preferences.lastIsVideo";
- /** True if playback of last played media has been completed. */
- public static final String PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED = "de.danoeh.antennapod.preferences.lastPlaybackCompleted";
- /**
- * ID of the last played media which should be auto-deleted as soon as
- * PREF_LAST_PLAYED_ID changes.
- */
- public static final String PREF_AUTODELETE_MEDIA_ID = "de.danoeh.antennapod.preferences.autoDeleteMediaId";
-
/** Contains the id of the FeedMedia object. */
public static final String EXTRA_MEDIA_ID = "extra.de.danoeh.antennapod.service.mediaId";
/** Contains the id of the Feed object of the FeedMedia. */
@@ -166,9 +145,6 @@ public class PlaybackService extends Service {
/** True if mediaplayer was paused because it lost audio focus temporarily */
private boolean pausedBecauseOfTransientAudiofocusLoss;
- /** Value of PREF_CURRENTLY_PLAYING_MEDIA if no media is playing. */
- public static final long NO_MEDIA_PLAYING = -1;
-
private final IBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder {
@@ -197,11 +173,7 @@ public class PlaybackService extends Service {
return new Intent(context, AudioplayerActivity.class);
}
} else {
- SharedPreferences pref = PreferenceManager
- .getDefaultSharedPreferences(context
- .getApplicationContext());
- boolean isVideo = pref.getBoolean(PREF_LAST_IS_VIDEO, false);
- if (isVideo) {
+ if (PlaybackPreferences.isLastIsVideo()) {
return new Intent(context, VideoplayerActivity.class);
} else {
return new Intent(context, AudioplayerActivity.class);
@@ -227,9 +199,8 @@ public class PlaybackService extends Service {
public static FeedMedia getLastPlayedMediaFromPreferences(Context context) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context.getApplicationContext());
- long mediaId = prefs.getLong(PlaybackService.PREF_LAST_PLAYED_ID, -1);
- long feedId = prefs.getLong(PlaybackService.PREF_LAST_PLAYED_FEED_ID,
- -1);
+ long mediaId = PlaybackPreferences.getLastPlayedId();
+ long feedId = PlaybackPreferences.getLastPlayedFeedId();
FeedManager manager = FeedManager.getInstance();
if (mediaId != -1 && feedId != -1) {
Feed feed = manager.getFeed(feedId);
@@ -243,12 +214,14 @@ public class PlaybackService extends Service {
private void setLastPlayedMediaId(long mediaId) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- long autoDeleteId = prefs.getLong(PREF_AUTODELETE_MEDIA_ID, -1);
+ long autoDeleteId = PlaybackPreferences.getAutoDeleteMediaId();
SharedPreferences.Editor editor = prefs.edit();
if (mediaId == autoDeleteId) {
- editor.putBoolean(PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED, false);
+ editor.putBoolean(
+ PlaybackPreferences.PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED,
+ false);
}
- editor.putLong(PREF_LAST_PLAYED_ID, mediaId);
+ editor.putLong(PlaybackPreferences.PREF_LAST_PLAYED_ID, mediaId);
editor.commit();
}
@@ -675,7 +648,7 @@ public class PlaybackService extends Service {
pause(true, true);
}
sendNotificationBroadcast(NOTIFICATION_TYPE_ERROR, what);
- setCurrentlyPlayingMedia(NO_MEDIA_PLAYING);
+ setCurrentlyPlayingMedia(PlaybackPreferences.NO_MEDIA_PLAYING);
stopSelf();
return true;
}
@@ -711,13 +684,18 @@ public class PlaybackService extends Service {
autoDeleteMediaId = -1;
}
SharedPreferences.Editor editor = prefs.edit();
- editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA, NO_MEDIA_PLAYING);
- editor.putLong(PREF_AUTODELETE_MEDIA_ID, autoDeleteMediaId);
- editor.putBoolean(PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED, true);
+ editor.putLong(PlaybackPreferences.PREF_CURRENTLY_PLAYING_MEDIA,
+ PlaybackPreferences.NO_MEDIA_PLAYING);
+ editor.putLong(PlaybackPreferences.PREF_AUTODELETE_MEDIA_ID,
+ autoDeleteMediaId);
+ editor.putBoolean(
+ PlaybackPreferences.PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED,
+ true);
editor.commit();
// Prepare for playing next item
- boolean playNextItem = isInQueue && UserPreferences.isFollowQueue() && nextItem != null;
+ boolean playNextItem = isInQueue && UserPreferences.isFollowQueue()
+ && nextItem != null;
if (playNextItem) {
if (AppConfig.DEBUG)
Log.d(TAG, "Loading next item in queue");
@@ -813,7 +791,7 @@ public class PlaybackService extends Service {
if (AppConfig.DEBUG)
Log.d(TAG, "Stopping playback");
player.stop();
- setCurrentlyPlayingMedia(NO_MEDIA_PLAYING);
+ setCurrentlyPlayingMedia(PlaybackPreferences.NO_MEDIA_PLAYING);
stopSelf();
}
@@ -854,10 +832,10 @@ public class PlaybackService extends Service {
SharedPreferences.Editor editor = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext())
.edit();
- editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA, media.getId());
- editor.putLong(PREF_LAST_PLAYED_FEED_ID, feed.getId());
- editor.putBoolean(PREF_LAST_IS_STREAM, shouldStream);
- editor.putBoolean(PREF_LAST_IS_VIDEO, playingVideo);
+ editor.putLong(PlaybackPreferences.PREF_CURRENTLY_PLAYING_MEDIA, media.getId());
+ editor.putLong(PlaybackPreferences.PREF_LAST_PLAYED_FEED_ID, feed.getId());
+ editor.putBoolean(PlaybackPreferences.PREF_LAST_IS_STREAM, shouldStream);
+ editor.putBoolean(PlaybackPreferences.PREF_LAST_IS_VIDEO, playingVideo);
editor.commit();
setLastPlayedMediaId(media.getId());
player.start();
@@ -1340,7 +1318,7 @@ public class PlaybackService extends Service {
private void setCurrentlyPlayingMedia(long id) {
SharedPreferences.Editor editor = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext()).edit();
- editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA, id);
+ editor.putLong(PlaybackPreferences.PREF_CURRENTLY_PLAYING_MEDIA, id);
editor.commit();
}
}
diff --git a/src/de/danoeh/antennapod/util/PlaybackController.java b/src/de/danoeh/antennapod/util/PlaybackController.java
index 1a61555ff..465feba8e 100644
--- a/src/de/danoeh/antennapod/util/PlaybackController.java
+++ b/src/de/danoeh/antennapod/util/PlaybackController.java
@@ -30,6 +30,7 @@ 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.preferences.PlaybackPreferences;
import de.danoeh.antennapod.service.PlaybackService;
import de.danoeh.antennapod.service.PlayerStatus;
@@ -185,9 +186,8 @@ public abstract class PlaybackController {
Log.d(TAG, "Trying to restore last played media");
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(activity.getApplicationContext());
- long mediaId = prefs.getLong(PlaybackService.PREF_LAST_PLAYED_ID, -1);
- long feedId = prefs.getLong(PlaybackService.PREF_LAST_PLAYED_FEED_ID,
- -1);
+ long mediaId = PlaybackPreferences.getLastPlayedId();
+ long feedId = PlaybackPreferences.getLastPlayedFeedId();
if (mediaId != -1 && feedId != -1) {
FeedMedia media = FeedManager.getInstance().getFeedMedia(mediaId);
if (media != null) {
@@ -200,8 +200,7 @@ public abstract class PlaybackController {
serviceIntent.putExtra(
PlaybackService.EXTRA_PREPARE_IMMEDIATELY, false);
boolean fileExists = media.fileExists();
- boolean lastIsStream = prefs.getBoolean(
- PlaybackService.PREF_LAST_IS_STREAM, true);
+ boolean lastIsStream = PlaybackPreferences.isLastIsStream();
if (!fileExists && !lastIsStream) {
FeedManager.getInstance().notifyMissingFeedMediaFile(
activity, media);