fix media notification operation without seekback

This commit is contained in:
svd
2021-10-29 11:05:25 +08:00
parent 37fea5c772
commit 5757d90b05
2 changed files with 23 additions and 13 deletions
@@ -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
}
+6 -6
View File
@@ -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)