From e2ef8c2593a9a09cd0c9ac1d42b1d248f00870fe Mon Sep 17 00:00:00 2001 From: Koen J Date: Wed, 5 Nov 2025 12:18:47 +0100 Subject: [PATCH] Shorts player keep screen on interaction. --- .../fragment/mainactivity/main/ShortView.kt | 11 +++++++++++ .../fragment/mainactivity/main/ShortsFragment.kt | 7 +++++++ .../platformplayer/views/video/FutoShortPlayer.kt | 4 ++++ 3 files changed, 22 insertions(+) diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ShortView.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ShortView.kt index 7078fd5d..e3a0a655 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ShortView.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ShortView.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.graphics.drawable.Animatable import android.util.AttributeSet import android.view.LayoutInflater +import android.view.WindowManager import android.view.animation.AccelerateInterpolator import android.view.animation.OvershootInterpolator import android.widget.FrameLayout @@ -214,6 +215,16 @@ class ShortView : FrameLayout { } } + player.onPlayChanged.subscribe { + if (it) { + Logger.i(TAG, "Keep screen on set because isPlaying") + fragment.activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + Logger.i(TAG, "Keep screen on cleared because not isPlaying") + fragment.activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + onPlayingToggled.subscribe { playing -> if (playing) { playPauseIcon.setImageResource(R.drawable.ic_play) diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ShortsFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ShortsFragment.kt index 61e91199..8e24b22d 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ShortsFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ShortsFragment.kt @@ -7,6 +7,7 @@ import android.view.LayoutInflater import android.view.SoundEffectConstants import android.view.View import android.view.ViewGroup +import android.view.WindowManager import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout @@ -309,6 +310,12 @@ class ShortsFragment : MainFragment() { customViewAdapter?.previousShownView?.stop() } + override fun onDestroyMainView() { + super.onDestroyMainView() + Logger.i(TAG, "Keep screen on cleared because onDestroyMainView fragment") + activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } + companion object { private const val TAG = "ShortsFragment" diff --git a/app/src/main/java/com/futo/platformplayer/views/video/FutoShortPlayer.kt b/app/src/main/java/com/futo/platformplayer/views/video/FutoShortPlayer.kt index 322a080a..d2705bb3 100644 --- a/app/src/main/java/com/futo/platformplayer/views/video/FutoShortPlayer.kt +++ b/app/src/main/java/com/futo/platformplayer/views/video/FutoShortPlayer.kt @@ -60,6 +60,10 @@ class FutoShortPlayer(context: Context, attrs: AttributeSet? = null) : if (events.containsAny(Player.EVENT_PLAYBACK_STATE_CHANGED)) { onPlaybackStateChanged.emit(player.playbackState) } + + if (events.containsAny(Player.EVENT_IS_PLAYING_CHANGED)) { + onPlayChanged.emit(player.isPlaying) + } } }