diff options
author | Tom Hennen <tom.hennen@gmail.com> | 2015-09-21 06:48:28 -0400 |
---|---|---|
committer | Tom Hennen <tom.hennen@gmail.com> | 2015-09-21 06:48:28 -0400 |
commit | 5b6fce427b756ee0675ee0eccf47190e8458bb81 (patch) | |
tree | 417781539d53114e1e8b41ef8d251a6499dc9391 /core/src/main/java/de/danoeh | |
parent | 6d0465ad13a28de97a445dd4ffcd96db054b893f (diff) | |
download | AntennaPod-5b6fce427b756ee0675ee0eccf47190e8458bb81.zip |
if it was skipped we shouldn't remove it, but otherwise we should
Diffstat (limited to 'core/src/main/java/de/danoeh')
3 files changed, 32 insertions, 37 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index ca9fbb1ba..c4c7a9b0b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -217,7 +217,7 @@ public class UserPreferences { return prefs.getBoolean(PREF_FOLLOW_QUEUE, false); } - public static boolean isSkipRemoveFromQueue() { return prefs.getBoolean(PREF_SKIP_REMOVES, false); } + public static boolean shouldSkipRemoveFromQueue() { return prefs.getBoolean(PREF_SKIP_REMOVES, false); } public static boolean isAutoDelete() { return prefs.getBoolean(PREF_AUTO_DELETE, false); 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 30c30a5bc..c3934ff01 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 @@ -14,7 +14,6 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.AudioManager; import android.media.MediaPlayer; -import android.media.RemoteControlClient; import android.os.Binder; import android.os.Build; import android.os.IBinder; @@ -164,7 +163,6 @@ public class PlaybackService extends Service { private static final int NOTIFICATION_ID = 1; - private RemoteControlClient remoteControlClient; private PlaybackServiceMediaPlayer mediaPlayer; private PlaybackServiceTaskManager taskManager; @@ -343,7 +341,7 @@ public class PlaybackService extends Service { break; case KeyEvent.KEYCODE_MEDIA_NEXT: - endPlayback(true); + endPlayback(true, true); break; case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: mediaPlayer.seekDelta(UserPreferences.getFastFowardSecs() * 1000); @@ -544,13 +542,13 @@ public class PlaybackService extends Service { } @Override - public boolean endPlayback(boolean playNextEpisode) { - PlaybackService.this.endPlayback(true); + public boolean endPlayback(boolean playNextEpisode, boolean wasSkipped) { + PlaybackService.this.endPlayback(playNextEpisode, wasSkipped); return true; } }; - private void endPlayback(boolean playNextEpisode) { + private void endPlayback(boolean playNextEpisode, boolean wasSkipped) { Log.d(TAG, "Playback ended"); final Playable playable = mediaPlayer.getPlayable(); @@ -577,7 +575,7 @@ public class PlaybackService extends Service { e.printStackTrace(); // isInQueue remains false } - if (isInQueue && UserPreferences.isSkipRemoveFromQueue()) { + if (isInQueue && (!wasSkipped || UserPreferences.shouldSkipRemoveFromQueue())) { DBWriter.removeQueueItem(PlaybackService.this, item, true); } DBWriter.addItemToPlaybackHistory(media); @@ -1094,7 +1092,7 @@ public class PlaybackService extends Service { public void onReceive(Context context, Intent intent) { if (StringUtils.equals(intent.getAction(), ACTION_SKIP_CURRENT_EPISODE)) { Log.d(TAG, "Received SKIP_CURRENT_EPISODE intent"); - mediaPlayer.endPlayback(); + mediaPlayer.endPlayback(true); } } }; 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 7cf7eb622..705cb987a 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 @@ -275,7 +275,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre private void updateMediaSessionMetadata() { executor.execute(() -> { final Playable p = this.media; - if(p == null) { + if (p == null) { return; } MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder(); @@ -930,25 +930,22 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre }; - public void endPlayback() { - executor.submit(new Runnable() { - @Override - public void run() { - playerLock.lock(); - releaseWifiLockIfNecessary(); - - if (playerStatus != PlayerStatus.INDETERMINATE) { - setPlayerStatus(PlayerStatus.INDETERMINATE, media); - } - if (mediaPlayer != null) { - mediaPlayer.reset(); + public void endPlayback(final boolean wasSkipped) { + executor.submit(() -> { + playerLock.lock(); + releaseWifiLockIfNecessary(); - } - audioManager.abandonAudioFocus(audioFocusChangeListener); - callback.endPlayback(true); + if (playerStatus != PlayerStatus.INDETERMINATE) { + setPlayerStatus(PlayerStatus.INDETERMINATE, media); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); - playerLock.unlock(); } + audioManager.abandonAudioFocus(audioFocusChangeListener); + callback.endPlayback(true, wasSkipped); + + playerLock.unlock(); }); } @@ -1006,20 +1003,20 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre } } - public static interface PSMPCallback { - public void statusChanged(PSMPInfo newInfo); + public interface PSMPCallback { + void statusChanged(PSMPInfo newInfo); - public void shouldStop(); + void shouldStop(); - public void playbackSpeedChanged(float s); + void playbackSpeedChanged(float s); - public void onBufferingUpdate(int percent); + void onBufferingUpdate(int percent); - public boolean onMediaPlayerInfo(int code); + boolean onMediaPlayerInfo(int code); - public boolean onMediaPlayerError(Object inObj, int what, int extra); + boolean onMediaPlayerError(Object inObj, int what, int extra); - public boolean endPlayback(boolean playNextEpisode); + boolean endPlayback(boolean playNextEpisode, boolean wasSkipped); } private IPlayer setMediaPlayerListeners(IPlayer mp) { @@ -1062,7 +1059,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre }; private void genericOnCompletion() { - endPlayback(); + endPlayback(false); } private final org.antennapod.audio.MediaPlayer.OnBufferingUpdateListener audioBufferingUpdateListener = new org.antennapod.audio.MediaPlayer.OnBufferingUpdateListener() { @@ -1177,7 +1174,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre @Override public void onSkipToNext() { super.onSkipToNext(); - endPlayback(); + endPlayback(true); } @Override @@ -1266,7 +1263,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre case KeyEvent.KEYCODE_MEDIA_NEXT: { Log.d(TAG, "Received next event from RemoteControlClient"); - endPlayback(); + endPlayback(true); return true; } default: |