diff --git a/app/src/main/java/code/name/monkey/retromusic/Constants.kt b/app/src/main/java/code/name/monkey/retromusic/Constants.kt
index da81f8821..aff976530 100644
--- a/app/src/main/java/code/name/monkey/retromusic/Constants.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/Constants.kt
@@ -70,6 +70,7 @@ const val EXTRA_SONG_INFO = "extra_song_info"
const val DESATURATED_COLOR = "desaturated_color"
const val BLACK_THEME = "black_theme"
const val KEEP_SCREEN_ON = "keep_screen_on"
+const val SHOW_WHEN_LOCKED = "show_when_locked"
const val TOGGLE_HOME_BANNER = "toggle_home_banner"
const val NOW_PLAYING_SCREEN_ID = "now_playing_screen_id"
const val CAROUSEL_EFFECT = "carousel_effect"
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
index 50c078d5d..c4db386c2 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
@@ -29,6 +29,7 @@ import code.name.monkey.retromusic.extensions.exitFullscreen
import code.name.monkey.retromusic.extensions.hideStatusBar
import code.name.monkey.retromusic.extensions.installSplitCompat
import code.name.monkey.retromusic.extensions.maybeSetScreenOn
+import code.name.monkey.retromusic.extensions.maybeShowWhenLocked
import code.name.monkey.retromusic.extensions.setEdgeToEdgeOrImmersive
import code.name.monkey.retromusic.extensions.setImmersiveFullscreen
import code.name.monkey.retromusic.extensions.setLightNavigationBarAuto
@@ -49,6 +50,7 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
super.onCreate(savedInstanceState)
setEdgeToEdgeOrImmersive()
maybeSetScreenOn()
+ maybeShowWhenLocked()
setLightNavigationBarAuto()
setLightStatusBarAuto(surfaceColor())
if (VersionUtils.hasQ()) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt
index d6c5a559d..b0380e4f6 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt
@@ -32,6 +32,22 @@ fun AppCompatActivity.keepScreenOn(keepScreenOn: Boolean) {
}
}
+fun AppCompatActivity.maybeShowWhenLocked() {
+ if (PreferenceUtil.isShowWhenLockedEnabled) {
+ if (VersionUtils.hasOreoMR1()) {
+ setShowWhenLocked(true)
+ } else {
+ window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
+ }
+ } else {
+ if (VersionUtils.hasOreoMR1()) {
+ setShowWhenLocked(false)
+ } else {
+ window.clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
+ }
+ }
+}
+
fun AppCompatActivity.setEdgeToEdgeOrImmersive() {
if (PreferenceUtil.isFullScreenMode) {
setImmersiveFullscreen()
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt
index bcb8fcfa5..97834ef76 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt
@@ -258,6 +258,8 @@ object PreferenceUtil {
val isScreenOnEnabled get() = sharedPreferences.getBoolean(KEEP_SCREEN_ON, false)
+ val isShowWhenLockedEnabled get() = sharedPreferences.getBoolean(SHOW_WHEN_LOCKED, false)
+
val isSongInfo get() = sharedPreferences.getBoolean(EXTRA_SONG_INFO, false)
val isPauseOnZeroVolume get() = sharedPreferences.getBoolean(PAUSE_ON_ZERO_VOLUME, false)
diff --git a/app/src/main/res/drawable/ic_screen_lock_portrait.xml b/app/src/main/res/drawable/ic_screen_lock_portrait.xml
new file mode 100644
index 000000000..dcb9c03c7
--- /dev/null
+++ b/app/src/main/res/drawable/ic_screen_lock_portrait.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1f108f1eb..37d4ab4c0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -336,6 +336,8 @@
Pause on zero
Keep in mind that enabling this feature may affect battery life
Keep the screen on
+ Requires an app restart to take effect. The player must be on foreground before locking for this feature to work
+ Show the player interface when locked
Select language
Snow fall effect
Use the currently playing song album cover as the lockscreen wallpaper
diff --git a/app/src/main/res/xml/pref_advanced.xml b/app/src/main/res/xml/pref_advanced.xml
index 52cb14c3e..eb11d8911 100755
--- a/app/src/main/res/xml/pref_advanced.xml
+++ b/app/src/main/res/xml/pref_advanced.xml
@@ -62,6 +62,14 @@
android:title="@string/pref_keep_screen_on_title"
app:icon="@drawable/ic_settings_brightness" />
+
+