diff options
Diffstat (limited to 'core')
4 files changed, 56 insertions, 20 deletions
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 993578a7f..69e96c503 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 @@ -129,10 +129,20 @@ public class FeedMedia extends FeedFile implements Playable { /** * Reads playback preferences to determine whether this FeedMedia object is - * currently being played and the player status is playing. + * currently being played and the current player status is playing. */ public boolean isCurrentlyPlaying() { - return isPlaying() && PlaybackPreferences.getPlayerStatusIsPlaying(); + return isPlaying() && + ((PlaybackPreferences.getCurrentPlayerStatus() == PlaybackPreferences.PLAYER_STATUS_PLAYING)); + } + + /** + * Reads playback preferences to determine whether this FeedMedia object is + * currently being played and the current player status is paused. + */ + public boolean isCurrentlyPaused() { + return isPlaying() && + ((PlaybackPreferences.getCurrentPlayerStatus() == PlaybackPreferences.PLAYER_STATUS_PAUSED)); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java index 774a629ae..714f1b051 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java @@ -44,18 +44,27 @@ public class PlaybackPreferences implements /** True if last played media was a video. */ public static final String PREF_CURRENT_EPISODE_IS_VIDEO = "de.danoeh.antennapod.preferences.lastIsVideo"; - /** True if player status is playing. */ - public static final String PREF_PLAYER_STATUS_IS_PLAYING = "de.danoeh.antennapod.preferences.playerStatusIsPlaying"; + /** The current player status as int. */ + public static final String PREF_CURRENT_PLAYER_STATUS = "de.danoeh.antennapod.preferences.currentPlayerStatus"; /** Value of PREF_CURRENTLY_PLAYING_MEDIA if no media is playing. */ public static final long NO_MEDIA_PLAYING = -1; + /** Value of PREF_CURRENT_PLAYER_STATUS if media player status is playing. */ + public static final int PLAYER_STATUS_PLAYING = 1; + + /** Value of PREF_CURRENT_PLAYER_STATUS if media player status is paused. */ + public static final int PLAYER_STATUS_PAUSED = 2; + + /** Value of PREF_CURRENT_PLAYER_STATUS if media player status is neither playing nor paused. */ + public static final int PLAYER_STATUS_OTHER = 3; + private long currentlyPlayingFeedId; private long currentlyPlayingFeedMediaId; private long currentlyPlayingMedia; private boolean currentEpisodeIsStream; private boolean currentEpisodeIsVideo; - private boolean playerStatusIsPlaying; + private int currentPlayerStatus; private static PlaybackPreferences instance; private Context context; @@ -92,7 +101,8 @@ public class PlaybackPreferences implements NO_MEDIA_PLAYING); currentEpisodeIsStream = sp.getBoolean(PREF_CURRENT_EPISODE_IS_STREAM, true); currentEpisodeIsVideo = sp.getBoolean(PREF_CURRENT_EPISODE_IS_VIDEO, false); - playerStatusIsPlaying = sp.getBoolean(PREF_PLAYER_STATUS_IS_PLAYING, false); + currentPlayerStatus = sp.getInt(PREF_CURRENT_PLAYER_STATUS, + PLAYER_STATUS_OTHER); } @Override @@ -115,9 +125,9 @@ public class PlaybackPreferences implements currentlyPlayingFeedMediaId = sp.getLong( PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING); } - else if (key.equals(PREF_PLAYER_STATUS_IS_PLAYING)) { - playerStatusIsPlaying = sp.getBoolean( - PREF_PLAYER_STATUS_IS_PLAYING, false); + else if (key.equals(PREF_CURRENT_PLAYER_STATUS)) { + currentPlayerStatus = sp.getInt(PREF_CURRENT_PLAYER_STATUS, + PLAYER_STATUS_OTHER); EventDistributor.getInstance().sendPlayerStatusUpdateBroadcast(); } } @@ -154,9 +164,9 @@ public class PlaybackPreferences implements return instance.currentEpisodeIsVideo; } - public static boolean getPlayerStatusIsPlaying() { + public static int getCurrentPlayerStatus() { instanceAvailable(); - return instance.playerStatusIsPlaying; + return instance.currentPlayerStatus; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index a1aa176ae..6f3eedcb2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -653,11 +653,26 @@ public class PlaybackService extends Service { editor.putLong( PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, PlaybackPreferences.NO_MEDIA_PLAYING); - editor.putBoolean( - PlaybackPreferences.PREF_PLAYER_STATUS_IS_PLAYING, false); + editor.putInt( + PlaybackPreferences.PREF_CURRENT_PLAYER_STATUS, + PlaybackPreferences.PLAYER_STATUS_OTHER); editor.commit(); } + private int getCurrentPlayerStatusAsInt(PlayerStatus playerStatus) { + int playerStatusAsInt; + switch (playerStatus) { + case PLAYING: + playerStatusAsInt = PlaybackPreferences.PLAYER_STATUS_PLAYING; + break; + case PAUSED: + playerStatusAsInt = PlaybackPreferences.PLAYER_STATUS_PAUSED; + break; + default: + playerStatusAsInt = PlaybackPreferences.PLAYER_STATUS_OTHER; + } + return playerStatusAsInt; + } private void writePlaybackPreferences() { if (BuildConfig.DEBUG) @@ -668,7 +683,7 @@ public class PlaybackService extends Service { PlaybackServiceMediaPlayer.PSMPInfo info = mediaPlayer.getPSMPInfo(); MediaType mediaType = mediaPlayer.getCurrentMediaType(); boolean stream = mediaPlayer.isStreaming(); - boolean isPlaying = (info.playerStatus == PlayerStatus.PLAYING); + int playerStatus = getCurrentPlayerStatusAsInt(info.playerStatus); if (info.playable != null) { editor.putLong(PlaybackPreferences.PREF_CURRENTLY_PLAYING_MEDIA, @@ -705,8 +720,8 @@ public class PlaybackService extends Service { PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, PlaybackPreferences.NO_MEDIA_PLAYING); } - editor.putBoolean( - PlaybackPreferences.PREF_PLAYER_STATUS_IS_PLAYING, isPlaying); + editor.putInt( + PlaybackPreferences.PREF_CURRENT_PLAYER_STATUS, playerStatus); editor.commit(); } @@ -718,10 +733,10 @@ public class PlaybackService extends Service { SharedPreferences.Editor editor = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()).edit(); PlaybackServiceMediaPlayer.PSMPInfo info = mediaPlayer.getPSMPInfo(); - boolean isPlaying = (info.playerStatus == PlayerStatus.PLAYING); + int playerStatus = getCurrentPlayerStatusAsInt(info.playerStatus); - editor.putBoolean( - PlaybackPreferences.PREF_PLAYER_STATUS_IS_PLAYING, isPlaying); + editor.putInt( + PlaybackPreferences.PREF_CURRENT_PLAYER_STATUS, playerStatus); editor.commit(); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java index 0dec5e073..b7c02011d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java @@ -169,7 +169,8 @@ public class PlaybackServiceMediaPlayer { if (media != null) { - if (!forceReset && media.getIdentifier().equals(playable.getIdentifier())) { + if (!forceReset && media.getIdentifier().equals(playable.getIdentifier()) + && playerStatus == PlayerStatus.PLAYING) { // episode is already playing -> ignore method call if (BuildConfig.DEBUG) Log.d(TAG, "Method call to playMediaObject was ignored: media file already playing."); |