From 8d0520394266b8fd9a45a727c7ce26ddfd8d204a Mon Sep 17 00:00:00 2001 From: alone-wolf <1031629044@qq.com> Date: Wed, 10 Aug 2022 17:43:11 +0800 Subject: [PATCH 1/2] Add feature of "Keep Screen On While Playing" --- .../fragments/player/MiniPlayerFragment.java | 22 +++++++++++++++++-- .../gramophone/util/PreferenceUtil.java | 6 +++++ app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + .../main/res/xml/pref_now_playing_screen.xml | 5 +++++ 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/MiniPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/MiniPlayerFragment.java index 37b730d17..ff7c40947 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/MiniPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/MiniPlayerFragment.java @@ -4,16 +4,19 @@ import android.content.res.ColorStateList; import android.graphics.PorterDuff; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import android.view.GestureDetector; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.appthemehelper.util.ATHUtil; import com.kabouzeid.gramophone.R; @@ -21,6 +24,7 @@ import com.kabouzeid.gramophone.helper.MusicProgressViewUpdateHelper; import com.kabouzeid.gramophone.helper.PlayPauseButtonOnClickHandler; import com.kabouzeid.gramophone.ui.fragments.AbsMusicServiceFragment; +import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.views.PlayPauseDrawable; import butterknife.BindView; @@ -103,6 +107,7 @@ public void onPlayingMetaChanged() { @Override public void onPlayStateChanged() { updatePlayPauseDrawableState(true); + updateScreenOnState(requireActivity().getWindow()); } @Override @@ -115,6 +120,7 @@ public void onUpdateProgressViews(int progress, int total) { public void onResume() { super.onResume(); progressViewUpdateHelper.start(); + updateScreenOnState(requireActivity().getWindow()); } @Override @@ -123,6 +129,18 @@ public void onPause() { progressViewUpdateHelper.stop(); } + private void updateScreenOnState(Window window){ + if (isKeepScreenOnWhilePlaying() && MusicPlayerRemote.isPlaying()) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + + private boolean isKeepScreenOnWhilePlaying(){ + return PreferenceUtil.getInstance(requireActivity()).keepScreenOnWhilePlaying(); + } + private static class FlingPlayBackController implements View.OnTouchListener { GestureDetector flingPlayBackController; diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java index 66e4234f4..e793f802b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java @@ -83,6 +83,8 @@ public final class PreferenceUtil { public static final String SYNCHRONIZED_LYRICS_SHOW = "synchronized_lyrics_show"; + public static final String KEEP_SCREEN_ON = "keep_screen_on"; + public static final String INITIALIZED_BLACKLIST = "initialized_blacklist"; public static final String LIBRARY_CATEGORIES = "library_categories"; @@ -489,6 +491,10 @@ public final boolean synchronizedLyricsShow() { return mPreferences.getBoolean(SYNCHRONIZED_LYRICS_SHOW, true); } + public final boolean keepScreenOnWhilePlaying(){ + return mPreferences.getBoolean(KEEP_SCREEN_ON,false); + } + public void setInitializedBlacklist() { final SharedPreferences.Editor editor = mPreferences.edit(); editor.putBoolean(INITIALIZED_BLACKLIST, true); diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index ad45b71db..eeae0f437 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -132,6 +132,7 @@ 音频焦点丢失时降低音量 最近添加播放列表间隔 显示同步歌词 + 播放时屏幕常亮 记住最后打开页面 记住随机播放开关 没有找到均衡器。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bded8aa70..93822e985 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -132,6 +132,7 @@ Reduce volume on focus loss Last added playlist interval Show synchronized lyrics + Keep Screen On While Playing Remember last tab Remember shuffle No equalizer found. diff --git a/app/src/main/res/xml/pref_now_playing_screen.xml b/app/src/main/res/xml/pref_now_playing_screen.xml index 78b993ea6..0d2fed78e 100644 --- a/app/src/main/res/xml/pref_now_playing_screen.xml +++ b/app/src/main/res/xml/pref_now_playing_screen.xml @@ -15,6 +15,11 @@ android:key="synchronized_lyrics_show" android:summary="@string/pref_summary_synchronized_lyrics_show" android:title="@string/pref_title_synchronized_lyrics_show" /> + From b702fb3d04d8b1d81e7babf0826252b7cd549b8c Mon Sep 17 00:00:00 2001 From: alone-wolf <1031629044@qq.com> Date: Wed, 10 Aug 2022 19:04:07 +0800 Subject: [PATCH 2/2] Fix feature of "Keep Screen On While Playing", there was a bug skipping the function of updateScreenOnState --- .../ui/fragments/AbsMusicServiceFragment.java | 24 ++++++++++++++++++- .../fragments/player/MiniPlayerFragment.java | 13 +--------- .../CardPlayerPlaybackControlsFragment.java | 1 + .../FlatPlayerPlaybackControlsFragment.java | 1 + 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/AbsMusicServiceFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/AbsMusicServiceFragment.java index 78847652a..28ef497d0 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/AbsMusicServiceFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/AbsMusicServiceFragment.java @@ -5,9 +5,13 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener; import com.kabouzeid.gramophone.ui.activities.base.AbsMusicServiceActivity; +import com.kabouzeid.gramophone.util.PreferenceUtil; /** * @author Karim Abou Zeid (kabouzeid) @@ -43,6 +47,24 @@ public void onDestroyView() { activity.removeMusicServiceEventListener(this); } + @Override + public void onResume() { + super.onResume(); + updateScreenOnState(requireActivity().getWindow()); + } + + private void updateScreenOnState(Window window){ + if (isKeepScreenOnWhilePlaying() && MusicPlayerRemote.isPlaying()) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + + private boolean isKeepScreenOnWhilePlaying(){ + return PreferenceUtil.getInstance(requireActivity()).keepScreenOnWhilePlaying(); + } + @Override public void onPlayingMetaChanged() { @@ -65,7 +87,7 @@ public void onQueueChanged() { @Override public void onPlayStateChanged() { - + updateScreenOnState(requireActivity().getWindow()); } @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/MiniPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/MiniPlayerFragment.java index ff7c40947..b83ef887a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/MiniPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/MiniPlayerFragment.java @@ -106,8 +106,8 @@ public void onPlayingMetaChanged() { @Override public void onPlayStateChanged() { + super.onPlayStateChanged(); updatePlayPauseDrawableState(true); - updateScreenOnState(requireActivity().getWindow()); } @Override @@ -120,7 +120,6 @@ public void onUpdateProgressViews(int progress, int total) { public void onResume() { super.onResume(); progressViewUpdateHelper.start(); - updateScreenOnState(requireActivity().getWindow()); } @Override @@ -129,17 +128,7 @@ public void onPause() { progressViewUpdateHelper.stop(); } - private void updateScreenOnState(Window window){ - if (isKeepScreenOnWhilePlaying() && MusicPlayerRemote.isPlaying()) { - window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } else { - window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } - } - private boolean isKeepScreenOnWhilePlaying(){ - return PreferenceUtil.getInstance(requireActivity()).keepScreenOnWhilePlaying(); - } private static class FlingPlayBackController implements View.OnTouchListener { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerPlaybackControlsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerPlaybackControlsFragment.java index d0cdc1e72..22217dcab 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerPlaybackControlsFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerPlaybackControlsFragment.java @@ -108,6 +108,7 @@ public void onServiceConnected() { @Override public void onPlayStateChanged() { + super.onPlayStateChanged(); updatePlayPauseDrawableState(true); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java index b24ef929b..cd5cb6069 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java @@ -116,6 +116,7 @@ public void onServiceConnected() { @Override public void onPlayStateChanged() { + super.onPlayStateChanged(); updatePlayPauseDrawableState(true); }