From 3cadaa5c7aac710901fd1d5ecd98e35c2f7b618b Mon Sep 17 00:00:00 2001 From: Jannik Date: Sat, 16 Jul 2022 14:35:22 +0200 Subject: [PATCH] update playhead every 30 seconds while playback is active --- .../mosad/teapod/ui/activity/player/PlayerActivity.kt | 10 +++++----- .../mosad/teapod/ui/activity/player/PlayerViewModel.kt | 10 ++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerActivity.kt b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerActivity.kt index 181b85c..bbc8ea9 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerActivity.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerActivity.kt @@ -70,7 +70,7 @@ class PlayerActivity : AppCompatActivity() { private lateinit var controller: StyledPlayerControlView private lateinit var gestureDetector: GestureDetectorCompat - private lateinit var timerUpdates: TimerTask + private lateinit var controlsUpdates: TimerTask private var wasInPiP = false private var remainingTime: Long = 0 @@ -286,11 +286,11 @@ class PlayerActivity : AppCompatActivity() { } private fun initTimeUpdates() { - if (this::timerUpdates.isInitialized) { - timerUpdates.cancel() + if (this::controlsUpdates.isInitialized) { + controlsUpdates.cancel() } - timerUpdates = Timer().scheduleAtFixedRate(0, 500) { + controlsUpdates = Timer().scheduleAtFixedRate(0, 500) { lifecycleScope.launch { val currentPosition = model.player.currentPosition val btnNextEpIsVisible = playerBinding.buttonNextEp.isVisible @@ -339,7 +339,7 @@ class PlayerActivity : AppCompatActivity() { private fun onPauseOnStop() { playerBinding.videoView.onPause() model.player.pause() - timerUpdates.cancel() + controlsUpdates.cancel() } /** diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt index 558e096..c779528 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt @@ -41,6 +41,7 @@ import org.mosad.teapod.util.metadb.Meta import org.mosad.teapod.util.metadb.MetaDBController import org.mosad.teapod.util.metadb.TVShowMeta import java.util.* +import kotlin.concurrent.scheduleAtFixedRate /** * PlayerViewModel handles all stuff related to media/episodes. @@ -52,6 +53,7 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application) val player = ExoPlayer.Builder(application).build() private val mediaSession = MediaSessionCompat(application, "TEAPOD_PLAYER_SESSION") + private val playheadAutoUpdate: TimerTask val currentEpisodeChangedListener = ArrayList<() -> Unit>() private var currentPlayhead: Long = 0 @@ -93,6 +95,14 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application) if (!isPlaying) updatePlayhead() } }) + + playheadAutoUpdate = Timer().scheduleAtFixedRate(0, 30000) { + viewModelScope.launch { + if (player.isPlaying){ + updatePlayhead() + } + } + } } override fun onCleared() {