diff options
author | ByteHamster <info@bytehamster.com> | 2020-10-28 10:56:22 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2020-10-28 10:56:22 +0100 |
commit | 8ad4682aa4cfc58065f02e12b5072b6ee966fafd (patch) | |
tree | 28b99744e35f6053326013c01a1b7e87d15db212 /core/src/main/java/de/danoeh | |
parent | 109e5716ed06f924b1b3c4324f8f3bf8fedc3de8 (diff) | |
parent | 81e2be8f2b7bd7e6bc7cb8c427443ec6cb596859 (diff) | |
download | AntennaPod-8ad4682aa4cfc58065f02e12b5072b6ee966fafd.zip |
Merge branch 'master' into develop
Diffstat (limited to 'core/src/main/java/de/danoeh')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java | 38 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java | 1 |
2 files changed, 27 insertions, 12 deletions
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 25c301ccc..60075dda6 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 @@ -216,7 +216,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { private Disposable positionEventTimer; private PlaybackServiceNotificationBuilder notificationBuilder; - private long autoSkippedFeedMediaId = -1; + private String autoSkippedFeedMediaId = null; /** * Used for Lollipop notifications, Android Wear, and Android Auto. @@ -650,7 +650,9 @@ public class PlaybackService extends MediaBrowserServiceCompat { } return false; case KeyEvent.KEYCODE_MEDIA_NEXT: - if (notificationButton || UserPreferences.shouldHardwareButtonSkip()) { + if (getStatus() != PlayerStatus.PLAYING && getStatus() != PlayerStatus.PAUSED) { + return false; + } else if (notificationButton || UserPreferences.shouldHardwareButtonSkip()) { // assume the skip command comes from a notification or the lockscreen // a >| skip button should actually skip mediaPlayer.skip(); @@ -661,10 +663,15 @@ public class PlaybackService extends MediaBrowserServiceCompat { } return true; case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: - mediaPlayer.seekDelta(UserPreferences.getFastForwardSecs() * 1000); - return true; + if (getStatus() == PlayerStatus.PLAYING || getStatus() == PlayerStatus.PAUSED) { + mediaPlayer.seekDelta(UserPreferences.getFastForwardSecs() * 1000); + return true; + } + return false; case KeyEvent.KEYCODE_MEDIA_PREVIOUS: - if (UserPreferences.shouldHardwarePreviousButtonRestart()) { + if (getStatus() != PlayerStatus.PLAYING && getStatus() != PlayerStatus.PAUSED) { + return false; + } else if (UserPreferences.shouldHardwarePreviousButtonRestart()) { // user wants to restart current episode mediaPlayer.seekTo(0); } else { @@ -673,7 +680,11 @@ public class PlaybackService extends MediaBrowserServiceCompat { } return true; case KeyEvent.KEYCODE_MEDIA_REWIND: - mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000); + if (getStatus() == PlayerStatus.PLAYING || getStatus() == PlayerStatus.PAUSED) { + mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000); + } else { + return false; + } return true; case KeyEvent.KEYCODE_MEDIA_STOP: if (status == PlayerStatus.PLAYING) { @@ -1072,18 +1083,21 @@ public class PlaybackService extends MediaBrowserServiceCompat { Log.d(TAG, "smart mark as played"); } + boolean autoSkipped = false; + if (autoSkippedFeedMediaId != null && autoSkippedFeedMediaId.equals(item.getIdentifyingValue())) { + autoSkippedFeedMediaId = null; + autoSkipped = true; + } + if (ended || smartMarkAsPlayed) { media.onPlaybackCompleted(getApplicationContext()); } else { media.onPlaybackPause(getApplicationContext()); } - if (autoSkippedFeedMediaId >= 0 && autoSkippedFeedMediaId == media.getId()) { - ended = true; - } - if (item != null) { if (ended || smartMarkAsPlayed + || autoSkipped || (skipped && !UserPreferences.shouldSkipKeepEpisode())) { // only mark the item as played if we're not keeping it anyways DBWriter.markItemPlayed(item, FeedItem.PLAYED, ended); @@ -1135,7 +1149,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { FeedPreferences preferences = feedMedia.getItem().getFeed().getPreferences(); int skipEnd = preferences.getFeedSkipEnding(); if (skipEnd > 0 - && skipEnd < getDuration() + && skipEnd * 1000 < getDuration() && (remainingTime - (skipEnd * 1000) > 0) && ((remainingTime - skipEnd * 1000) < (getCurrentPlaybackSpeed() * 1000))) { Log.d(TAG, "skipEndingIfNecessary: Skipping the remaining " + remainingTime + " " + skipEnd * 1000 + " speed " + getCurrentPlaybackSpeed()); @@ -1144,7 +1158,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { Toast toast = Toast.makeText(context, skipMesg, Toast.LENGTH_LONG); toast.show(); - this.autoSkippedFeedMediaId = feedMedia.getItem().getId(); + this.autoSkippedFeedMediaId = feedMedia.getItem().getIdentifyingValue(); mediaPlayer.skip(); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java index d47d26af9..425a07f4a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java @@ -512,6 +512,7 @@ public class PlaybackController { new PlaybackServiceStarter(activity, media) .startWhenPrepared(true) .streamIfLastWasStream() + .callEvenIfRunning(true) .start(); Log.w(TAG, "Play/Pause button was pressed and PlaybackService state was unknown"); break; |