diff --git a/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt index 7a5101bd..b4d7e1d7 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt @@ -82,6 +82,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { var seekAmount: Long = 20000 //ms private var lastPauseTime: Long = 0 //ms + private var onSeekBack: Boolean = false fun setCustomObjectListener(mylistener: MyCustomObjectListener) { listener = mylistener @@ -416,6 +417,21 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { } if (events.contains(Player.EVENT_IS_PLAYING_CHANGED)) { Log.d(tag, "EVENT IS PLAYING CHANGED") + if (player.isPlaying) { + if (lastPauseTime > 0) { + if (onSeekBack) onSeekBack = false + else { + var backTime = calcPauseSeekBackTime() + if (backTime > 0) { + if (backTime >= mPlayer.currentPosition) backTime = mPlayer.currentPosition - 500 + Log.d(tag, "SeekBackTime $backTime") + onSeekBack = true + seekBackward(backTime) + } + } + } + } + else lastPauseTime = System.currentTimeMillis() if (listener != null) listener.onPlayingUpdate(player.isPlaying) } } @@ -522,18 +538,11 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { Log.d(tag, "Already playing") return } - if (lastPauseTime > 0) { - var backTime = calcPauseSeekBackTime() - if (backTime >= mPlayer.currentPosition) backTime = mPlayer.currentPosition - 500 - Log.d(tag, "SeekBackTime $backTime") - seekBackward(backTime) - } mPlayer.play() } fun pause() { mPlayer.pause() - lastPauseTime = System.currentTimeMillis() } fun seekPlayer(time: Long) { @@ -556,6 +565,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { if (mPlayer.playbackState == Player.STATE_READY) { mPlayer.clearMediaItems() } + currentAudiobook?.id = "" lastPauseTime = 0 } diff --git a/components/AudioPlayerMini.vue b/components/AudioPlayerMini.vue index 4c4642d2..b7d0e420 100644 --- a/components/AudioPlayerMini.vue +++ b/components/AudioPlayerMini.vue @@ -75,7 +75,7 @@ export default { seekLoading: false, onPlayingUpdateListener: null, onMetadataListener: null, - noSyncUpdateTime: false + noSyncUpdateTime: false } }, computed: { @@ -101,7 +101,7 @@ export default { MyNativeAudio.seekForward({ amount: '10000' }) }, sendStreamUpdate() { - this.$emit('updateTime', this.currentTime) + this.$emit('updateTime', this.currentTime) }, setStreamReady() { this.readyTrackWidth = this.trackWidth @@ -228,7 +228,7 @@ export default { console.log('Same audiobook') this.isPaused = !data.isPlaying this.currentTime = Number((data.currentTime / 1000).toFixed(2)) - this.totalDuration = Number((data.duration / 1000).toFixed(2)) + this.totalDuration = Number((data.duration / 1000).toFixed(2)) this.timeupdate() if (data.isPlaying) { console.log('playing - continue') @@ -333,9 +333,9 @@ export default { this.setFromObj() } - if ((this.stateName === 'ready_no_sync') || (this.stateName === 'buffering_no_sync')) this.noSyncUpdateTime = true - - this.timeupdate() + if ((this.stateName === 'ready_no_sync') || (this.stateName === 'buffering_no_sync')) this.noSyncUpdateTime = true + + this.timeupdate() }, init() { this.onPlayingUpdateListener = MyNativeAudio.addListener('onPlayingUpdate', this.onPlayingUpdate) diff --git a/components/app/StreamContainer.vue b/components/app/StreamContainer.vue index 1883ea68..6c1f22ac 100644 --- a/components/app/StreamContainer.vue +++ b/components/app/StreamContainer.vue @@ -154,6 +154,7 @@ export default { if (value) { this.$server.socket.emit('close_stream') this.$store.commit('setStreamAudiobook', null) + this.$server.stream = null if (this.$refs.audioPlayerMini) { this.$refs.audioPlayerMini.terminateStream() }