diff --git a/android/app/src/main/java/com/audiobookshelf/app/MainActivity.kt b/android/app/src/main/java/com/audiobookshelf/app/MainActivity.kt index 1ba21952..8e2e0bae 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/MainActivity.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/MainActivity.kt @@ -92,9 +92,7 @@ class MainActivity : BridgeActivity() { foregroundService = mLocalBinder.getService() // Let NativeAudio know foreground service is ready and setup event listener - if (pluginCallback != null) { - pluginCallback() - } + pluginCallback() } } diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index 407c64c0..9c601bf4 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -15,6 +15,7 @@ import android.support.v4.media.session.PlaybackStateCompat import android.util.Log import androidx.annotation.RequiresApi import androidx.core.app.NotificationCompat +import androidx.core.content.ContextCompat import androidx.media.MediaBrowserServiceCompat import androidx.media.utils.MediaConstants import com.audiobookshelf.app.BuildConfig @@ -300,6 +301,13 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { User callable methods */ fun preparePlayer(playbackSession: PlaybackSession, playWhenReady:Boolean, playbackRate:Float?) { + if (!isStarted) { + Log.i(tag, "preparePlayer: foreground service not started - Starting service --") + Intent(ctx, PlayerNotificationService::class.java).also { intent -> + ContextCompat.startForegroundService(ctx, intent) + } + } + isClosed = false val playbackRateToUse = playbackRate ?: initialPlaybackRate ?: 1f initialPlaybackRate = playbackRate @@ -660,6 +668,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { PlayerListener.lastPauseTime = 0 isClosed = true stopForeground(true) + stopSelf() } fun sendClientMetadata(playerState: PlayerState) { diff --git a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsAudioPlayer.kt b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsAudioPlayer.kt index eacf09bf..2e2bdb35 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsAudioPlayer.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsAudioPlayer.kt @@ -1,10 +1,8 @@ package com.audiobookshelf.app.plugins -import android.content.Intent import android.os.Handler import android.os.Looper import android.util.Log -import androidx.core.content.ContextCompat import com.audiobookshelf.app.MainActivity import com.audiobookshelf.app.data.* import com.audiobookshelf.app.device.DeviceManager @@ -150,14 +148,6 @@ class AbsAudioPlayer : Plugin() { @PluginMethod fun prepareLibraryItem(call: PluginCall) { - // Need to make sure the player service has been started - if (!PlayerNotificationService.isStarted) { - Log.w(tag, "prepareLibraryItem: PlayerService not started - Starting foreground service --") - Intent(mainActivity, PlayerNotificationService::class.java).also { intent -> - ContextCompat.startForegroundService(mainActivity, intent) - } - } - val libraryItemId = call.getString("libraryItemId", "").toString() val episodeId = call.getString("episodeId", "").toString() val playWhenReady = call.getBoolean("playWhenReady") == true