From 90f35ed0094d4413c9bf1cb8842eeebd73146f80 Mon Sep 17 00:00:00 2001 From: mcc Date: Sun, 10 Dec 2023 13:56:02 -0500 Subject: [PATCH 1/3] Media3/exoplayer introduced a regression where the device can sleep while video/audio are playing. Patch restores v23 behavior --- .../main/java/com/keylesspalace/tusky/ViewMediaActivity.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt index 88b330c84..a414ac994 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt @@ -35,6 +35,7 @@ import android.util.Log import android.view.Menu import android.view.MenuItem import android.view.View +import android.view.WindowManager import android.webkit.MimeTypeMap import android.widget.Toast import androidx.core.app.ShareCompat @@ -155,6 +156,10 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment. window.sharedElementEnterTransition.removeListener(this) } }) + + // Prevent this activity from dimming or sleeping the screen if it is playing video or audio + if (attachments!![binding.viewPager.currentItem].attachment.type != Attachment.Type.IMAGE) + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } override fun onCreateOptionsMenu(menu: Menu): Boolean { From b9a593d6b0418501c908d5d7fa84c18e2aecdff9 Mon Sep 17 00:00:00 2001 From: mcc Date: Sun, 10 Dec 2023 18:13:46 -0500 Subject: [PATCH 2/3] ktLint fix --- app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt index a414ac994..f0943264c 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt @@ -158,8 +158,9 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment. }) // Prevent this activity from dimming or sleeping the screen if it is playing video or audio - if (attachments!![binding.viewPager.currentItem].attachment.type != Attachment.Type.IMAGE) + if (attachments!![binding.viewPager.currentItem].attachment.type != Attachment.Type.IMAGE) { window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } } override fun onCreateOptionsMenu(menu: Menu): Boolean { From 877e7c6ec1404314ac0413b43d9183e4e98b4656 Mon Sep 17 00:00:00 2001 From: mcc Date: Tue, 12 Dec 2023 18:01:18 -0500 Subject: [PATCH 3/3] Adjust ViewMediaActivity FLAG_KEEP_SCREEN_ON logic to support swipe gestures --- .../com/keylesspalace/tusky/ViewMediaActivity.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt index f0943264c..4569ca1dc 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt @@ -125,6 +125,7 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment. binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { binding.toolbar.title = getPageTitle(position) + adjustScreenWakefulness() } }) @@ -157,10 +158,7 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment. } }) - // Prevent this activity from dimming or sleeping the screen if it is playing video or audio - if (attachments!![binding.viewPager.currentItem].attachment.type != Attachment.Type.IMAGE) { - window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - } + adjustScreenWakefulness() } override fun onCreateOptionsMenu(menu: Menu): Boolean { @@ -348,6 +346,15 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment. shareFile(file, mimeType) } + // Prevent this activity from dimming or sleeping the screen if, and only if, it is playing video or audio + private fun adjustScreenWakefulness() { + if (attachments!![binding.viewPager.currentItem].attachment.type == Attachment.Type.IMAGE) { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } else { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } + } + override fun androidInjector() = androidInjector companion object {