summaryrefslogtreecommitdiff
path: root/core/src/main/java/de/danoeh
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-10-28 10:56:22 +0100
committerByteHamster <info@bytehamster.com>2020-10-28 10:56:22 +0100
commit8ad4682aa4cfc58065f02e12b5072b6ee966fafd (patch)
tree28b99744e35f6053326013c01a1b7e87d15db212 /core/src/main/java/de/danoeh
parent109e5716ed06f924b1b3c4324f8f3bf8fedc3de8 (diff)
parent81e2be8f2b7bd7e6bc7cb8c427443ec6cb596859 (diff)
downloadAntennaPod-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.java38
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java1
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;