From 74551e83ab88c1f65bd34d8b3ff5636ccbfc6c7a Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 10 Apr 2024 19:30:49 -0600 Subject: [PATCH] playback: fix being unable to exit fg --- .../java/org/oxycblt/auxio/AuxioService.kt | 20 +++++++++++-------- .../playback/service/MediaSessionPlayer.kt | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/AuxioService.kt b/app/src/main/java/org/oxycblt/auxio/AuxioService.kt index 58785e096..d37abca77 100644 --- a/app/src/main/java/org/oxycblt/auxio/AuxioService.kt +++ b/app/src/main/java/org/oxycblt/auxio/AuxioService.kt @@ -67,6 +67,7 @@ import org.oxycblt.auxio.playback.PlaybackSettings import org.oxycblt.auxio.playback.service.ExoPlaybackStateHolder import org.oxycblt.auxio.playback.service.SystemPlaybackReceiver import org.oxycblt.auxio.playback.state.PlaybackStateManager +import org.oxycblt.auxio.playback.state.Progression import org.oxycblt.auxio.playback.state.RepeatMode import org.oxycblt.auxio.util.getSystemServiceCompat import org.oxycblt.auxio.util.logD @@ -232,10 +233,6 @@ class AuxioService : // --- INTERNAL --- private fun updateForeground(forMusic: Boolean) { - if (playbackManager.progression.isPlaying) { - inPlayback = true - } - if (inPlayback) { if (!forMusic) { val notification = @@ -287,7 +284,7 @@ class AuxioService : } else { // Not observing and done loading, exit foreground. logD("Exiting foreground") - ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_DETACH) + ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_REMOVE) } // Release our wake lock (if we were using it) wakeLock.releaseSafe() @@ -500,9 +497,11 @@ class AuxioService : updateCustomButtons() } - override fun onQueueReordered(queue: List, index: Int, isShuffled: Boolean) { - super.onQueueReordered(queue, index, isShuffled) - updateCustomButtons() + override fun onProgressionChanged(progression: Progression) { + super.onProgressionChanged(progression) + if (progression.isPlaying) { + inPlayback = true + } } override fun onRepeatModeChanged(repeatMode: RepeatMode) { @@ -510,6 +509,11 @@ class AuxioService : updateCustomButtons() } + override fun onQueueReordered(queue: List, index: Int, isShuffled: Boolean) { + super.onQueueReordered(queue, index, isShuffled) + updateCustomButtons() + } + override fun onNotificationActionChanged() { super.onNotificationActionChanged() updateCustomButtons() diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionPlayer.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionPlayer.kt index 1ea54f92a..f2c5011fd 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionPlayer.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionPlayer.kt @@ -44,11 +44,11 @@ import org.oxycblt.auxio.playback.state.PlaybackCommand import org.oxycblt.auxio.playback.state.PlaybackStateManager import org.oxycblt.auxio.playback.state.RepeatMode import org.oxycblt.auxio.playback.state.ShuffleMode -import org.oxycblt.auxio.util.logD /** * A thin wrapper around the player instance that takes all the events I know MediaSession will send * and routes them to PlaybackStateManager so I know that they will work the way I want it to. + * * @author Alexander Capehart */ class MediaSessionPlayer(