mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2026-07-25 14:08:35 +02:00
add auto seekback
This commit is contained in:
@@ -488,6 +488,19 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
||||
return lastPauseTime
|
||||
}
|
||||
|
||||
fun calcPauseSeekBackTime() : Long {
|
||||
if (lastPauseTime <= 0) return 0
|
||||
var time: Long = System.currentTimeMillis() - lastPauseTime
|
||||
var seekback: Long = 0
|
||||
if (time < 3) seekback = 0
|
||||
else if (time < 60000) seekback = time / 6
|
||||
else if (time < 300000) seekback = 15000
|
||||
else if (time < 1800000) seekback = 20000
|
||||
else if (time < 3600000) seekback = 25000
|
||||
else seekback = 29500
|
||||
return seekback
|
||||
}
|
||||
|
||||
fun getPlayStatus() : Boolean {
|
||||
return mPlayer.isPlaying
|
||||
}
|
||||
@@ -501,6 +514,12 @@ 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()
|
||||
}
|
||||
|
||||
|
||||
@@ -198,6 +198,17 @@ export default {
|
||||
this.pause()
|
||||
}
|
||||
},
|
||||
calcSeekBackTime(lastUpdate) {
|
||||
var time = Date.now() - lastUpdate
|
||||
var seekback = 0
|
||||
if (time < 3) seekback = 0
|
||||
else if (time < 60000) seekback = time / 6
|
||||
else if (time < 300000) seekback = 15000
|
||||
else if (time < 1800000) seekback = 20000
|
||||
else if (time < 3600000) seekback = 25000
|
||||
else seekback = 29500
|
||||
return seekback
|
||||
},
|
||||
async set(audiobookStreamData, stream, fromAppDestroy) {
|
||||
this.isResetting = false
|
||||
this.initObject = { ...audiobookStreamData }
|
||||
@@ -222,6 +233,17 @@ export default {
|
||||
init = false
|
||||
this.initObject.startTime = String(Math.floor(this.currentTime * 1000))
|
||||
}
|
||||
//new audiobook stream or sync from other client
|
||||
else if (stream.clientCurrentTime > 0) {
|
||||
console.log('new audiobook stream or sync from other client')
|
||||
if (!!stream.lastUpdate) {
|
||||
var backTime = this.calcSeekBackTime(stream.lastUpdate)
|
||||
var currentTime = Math.floor(stream.clientCurrentTime * 1000)
|
||||
if (backTime >= currentTime) backTime = currentTime - 500
|
||||
console.log('SeekBackTime', backTime)
|
||||
this.initObject.startTime = String(Math.floor(currentTime - backTime))
|
||||
}
|
||||
}
|
||||
}
|
||||
this.currentPlaybackRate = this.initObject.playbackSpeed
|
||||
if (init) MyNativeAudio.initPlayer(this.initObject).then((res) => {
|
||||
|
||||
Reference in New Issue
Block a user