From c72127e1ce53caf3e28e7bda0155ac84beaf8a31 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 26 Sep 2023 17:05:40 +0200 Subject: [PATCH 1/5] keep screen on while playing voice message --- .../securesms/audio/AudioSlidePlayer.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java index 4e745773d..0330c81ca 100644 --- a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java +++ b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java @@ -1,12 +1,15 @@ package org.thoughtcrime.securesms.audio; +import android.app.Activity; import android.content.Context; +import android.content.ContextWrapper; import android.content.Intent; import android.net.Uri; import android.os.Handler; import android.os.Message; import android.util.Log; import android.util.Pair; +import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -129,6 +132,7 @@ public class AudioSlidePlayer { @Override public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { Log.d(TAG, "onPlayerStateChanged(" + playWhenReady + ", " + playbackState + ")"); + Activity activity; switch (playbackState) { case Player.STATE_READY: @@ -151,6 +155,11 @@ public class AudioSlidePlayer { setPlaying(AudioSlidePlayer.this); } + activity = getActivity(context); + if (activity != null) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + notifyOnStart(); progressEventHandler.sendEmptyMessage(0); break; @@ -163,6 +172,11 @@ public class AudioSlidePlayer { mediaPlayer = null; } + activity = getActivity(context); + if (activity != null) { + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + notifyOnStop(); progressEventHandler.removeMessages(0); } @@ -285,6 +299,13 @@ public class AudioSlidePlayer { }; } + private Activity getActivity(Context context) { + if (context == null) return null; + if (context instanceof Activity) return (Activity) context; + if (context instanceof ContextWrapper) return getActivity(((ContextWrapper)context).getBaseContext()); + return null; + } + private synchronized static void setPlaying(@NonNull AudioSlidePlayer player) { if (playing.isPresent() && playing.get() != player) { playing.get().notifyOnStop(); From 9a9a60223592fec01013547964b0c3d9e6d2cde6 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 26 Sep 2023 20:52:56 +0200 Subject: [PATCH 2/5] also turn off screen if track is paused --- .../securesms/audio/AudioSlidePlayer.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java index 0330c81ca..c590d8389 100644 --- a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java +++ b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java @@ -155,11 +155,7 @@ public class AudioSlidePlayer { setPlaying(AudioSlidePlayer.this); } - activity = getActivity(context); - if (activity != null) { - activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } - + keepScreenOn(true); notifyOnStart(); progressEventHandler.sendEmptyMessage(0); break; @@ -172,11 +168,7 @@ public class AudioSlidePlayer { mediaPlayer = null; } - activity = getActivity(context); - if (activity != null) { - activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } - + keepScreenOn(false); notifyOnStop(); progressEventHandler.removeMessages(0); } @@ -211,9 +203,21 @@ public class AudioSlidePlayer { .createMediaSource(uri); } + public void keepScreenOn(boolean keepOn) { + Activity activity = getActivity(context); + if (activity != null) { + if (keepOn) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + } + public synchronized void stop() { Log.i(TAG, "Stop called!"); + keepScreenOn(false); removePlaying(this); if (this.mediaPlayer != null) { From c50ebe6e1663228542ccff005f61dafd22a3b668 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 26 Sep 2023 20:54:28 +0200 Subject: [PATCH 3/5] put keepScreenOn together getActivity() --- .../securesms/audio/AudioSlidePlayer.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java index c590d8389..23273d622 100644 --- a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java +++ b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java @@ -203,17 +203,6 @@ public class AudioSlidePlayer { .createMediaSource(uri); } - public void keepScreenOn(boolean keepOn) { - Activity activity = getActivity(context); - if (activity != null) { - if (keepOn) { - activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } else { - activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } - } - } - public synchronized void stop() { Log.i(TAG, "Stop called!"); @@ -303,6 +292,17 @@ public class AudioSlidePlayer { }; } + public void keepScreenOn(boolean keepOn) { + Activity activity = getActivity(context); + if (activity != null) { + if (keepOn) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + } + private Activity getActivity(Context context) { if (context == null) return null; if (context instanceof Activity) return (Activity) context; From 9dbcff390814c841d04790156ad87fbfe4a0e194 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 26 Sep 2023 21:41:54 +0200 Subject: [PATCH 4/5] remove getActivity() --- .../thoughtcrime/securesms/audio/AudioSlidePlayer.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java index 23273d622..d19573444 100644 --- a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java +++ b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java @@ -132,7 +132,6 @@ public class AudioSlidePlayer { @Override public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { Log.d(TAG, "onPlayerStateChanged(" + playWhenReady + ", " + playbackState + ")"); - Activity activity; switch (playbackState) { case Player.STATE_READY: @@ -293,7 +292,7 @@ public class AudioSlidePlayer { } public void keepScreenOn(boolean keepOn) { - Activity activity = getActivity(context); + Activity activity = (context instanceof Activity)? (Activity) context : null; if (activity != null) { if (keepOn) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); @@ -303,13 +302,6 @@ public class AudioSlidePlayer { } } - private Activity getActivity(Context context) { - if (context == null) return null; - if (context instanceof Activity) return (Activity) context; - if (context instanceof ContextWrapper) return getActivity(((ContextWrapper)context).getBaseContext()); - return null; - } - private synchronized static void setPlaying(@NonNull AudioSlidePlayer player) { if (playing.isPresent() && playing.get() != player) { playing.get().notifyOnStop(); From 118fdccc7b0e4c4ac16d2b606f003de5a8bfe2d4 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 26 Sep 2023 21:43:47 +0200 Subject: [PATCH 5/5] improve code --- src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java index d19573444..360612a9f 100644 --- a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java +++ b/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java @@ -292,12 +292,11 @@ public class AudioSlidePlayer { } public void keepScreenOn(boolean keepOn) { - Activity activity = (context instanceof Activity)? (Activity) context : null; - if (activity != null) { + if (context instanceof Activity) { if (keepOn) { - activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + ((Activity) context).getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } else { - activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + ((Activity) context).getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } } }