summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2023-01-29 16:45:26 +0100
committerGitHub <noreply@github.com>2023-01-29 16:45:26 +0100
commit731adeaf2c36842f067fc22b57f5decb3141efac (patch)
tree198328edad333405e3add32a9ada2a5d7fdb7067 /core
parentefcb7107033accd7653702bd77f62d56f91d68d4 (diff)
downloadAntennaPod-731adeaf2c36842f067fc22b57f5decb3141efac.zip
Don't stop service between episodes (#6293)
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java28
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java5
2 files changed, 9 insertions, 24 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 bf8cf7778..4fb7bcf2a 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
@@ -760,13 +760,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
taskManager.startChapterLoader(newInfo.playable);
break;
case PAUSED:
- if (UserPreferences.isPersistNotify() || isCasting) {
- // do not remove notification on pause based on user pref
- // Change [Play] button to [Pause]
- updateNotificationAndMediaSession(newInfo.playable);
- } else if (!UserPreferences.isPersistNotify() && !isCasting) {
- // remove notification on pause
- stateManager.stopForeground(true);
+ updateNotificationAndMediaSession(newInfo.playable);
+ if (!isCasting) {
+ stateManager.stopForeground(!UserPreferences.isPersistNotify());
}
cancelPositionObserver();
PlaybackPreferences.writePlayerStatus(mediaPlayer.getPlayerStatus());
@@ -811,7 +807,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
@Override
public void shouldStop() {
- updateNotificationAndMediaSession(getPlayable()); // Stops foreground if not playing
+ stateManager.stopForeground(!UserPreferences.isPersistNotify());
}
@Override
@@ -1271,7 +1267,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(R.id.notification_playing, notificationBuilder.build());
- startForegroundIfPlaying(playerStatus);
if (!notificationBuilder.isIconCached()) {
playableIconLoaderThread = new Thread(() -> {
@@ -1286,21 +1281,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
}
- private void startForegroundIfPlaying(@NonNull PlayerStatus status) {
- Log.d(TAG, "startForegroundIfPlaying: " + status);
- if (stateManager.hasReceivedValidStartCommand()) {
- if (isCasting || status == PlayerStatus.PLAYING || status == PlayerStatus.PREPARING
- || status == PlayerStatus.SEEKING) {
- stateManager.startForeground(R.id.notification_playing, notificationBuilder.build());
- Log.d(TAG, "foreground");
- } else {
- stateManager.stopForeground(false);
- NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
- notificationManager.notify(R.id.notification_playing, notificationBuilder.build());
- }
- }
- }
-
/**
* Persists the current position and last played time of the media file.
*
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java
index addc6b996..9926e01da 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java
@@ -1,10 +1,12 @@
package de.danoeh.antennapod.core.service.playback;
import android.app.Notification;
+import android.util.Log;
import androidx.core.app.ServiceCompat;
class PlaybackServiceStateManager {
+ private static final String TAG = "PlaybackSrvState";
private final PlaybackService playbackService;
private volatile boolean isInForeground = false;
@@ -15,17 +17,20 @@ class PlaybackServiceStateManager {
}
void startForeground(int notificationId, Notification notification) {
+ Log.d(TAG, "startForeground");
playbackService.startForeground(notificationId, notification);
isInForeground = true;
}
void stopService() {
+ Log.d(TAG, "stopService");
stopForeground(true);
playbackService.stopSelf();
hasReceivedValidStartCommand = false;
}
void stopForeground(boolean removeNotification) {
+ Log.d(TAG, "stopForeground");
if (isInForeground) {
if (removeNotification) {
ServiceCompat.stopForeground(playbackService, ServiceCompat.STOP_FOREGROUND_REMOVE);