diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/activity/base/BaseActivity.java b/app/src/main/java/com/cappielloantonio/tempo/ui/activity/base/BaseActivity.java
index 37fb3ebf..9eaa2c36 100644
--- a/app/src/main/java/com/cappielloantonio/tempo/ui/activity/base/BaseActivity.java
+++ b/app/src/main/java/com/cappielloantonio/tempo/ui/activity/base/BaseActivity.java
@@ -6,6 +6,7 @@ import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.PowerManager;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -37,6 +38,7 @@ public class BaseActivity extends AppCompatActivity {
initializeDownloader();
checkBatteryOptimization();
checkPermission();
+ checkAlwaysOnDisplay();
}
@Override
@@ -66,6 +68,12 @@ public class BaseActivity extends AppCompatActivity {
}
}
+ private void checkAlwaysOnDisplay() {
+ if (Preferences.isDisplayAlwaysOn()) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ }
+ }
+
private boolean detectBatteryOptimization() {
String packageName = getPackageName();
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java
index c28335cd..99abcbdc 100644
--- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java
+++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java
@@ -6,6 +6,7 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
@@ -91,6 +92,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
actionSyncStarredTracks();
actionChangeDownloadStorage();
actionDeleteDownloadStorage();
+ actionKeepScreenOn();
}
@Override
@@ -248,4 +250,17 @@ public class SettingsFragment extends PreferenceFragmentCompat {
}
});
}
+
+ private void actionKeepScreenOn() {
+ findPreference("always_on_display").setOnPreferenceChangeListener((preference, newValue) -> {
+ if (newValue instanceof Boolean) {
+ if ((Boolean) newValue) {
+ activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ } else {
+ activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ }
+ }
+ return true;
+ });
+ }
}
diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt b/app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt
index a3f2cedd..71c031ff 100644
--- a/app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt
+++ b/app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt
@@ -46,6 +46,7 @@ object Preferences {
private const val SKIP_MIN_STAR_RATING = "skip_min_star_rating"
private const val MIN_STAR_RATING = "min_star_rating"
private const val ARTIST_ALBUM_LAYOUT = "artist_album_layout"
+ private const val ALWAYS_ON_DISPLAY = "always_on_display"
@JvmStatic
@@ -357,4 +358,9 @@ object Preferences {
App.getInstance().preferences.edit().putBoolean(ARTIST_ALBUM_LAYOUT, isArtistAlbumLayoutHorizontal)
.apply()
}
+
+ @JvmStatic
+ fun isDisplayAlwaysOn(): Boolean {
+ return App.getInstance().preferences.getBoolean(ALWAYS_ON_DISPLAY, false)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4095540a..2fb179a9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -224,6 +224,7 @@
Server unreachable
Tempo is an open source and lightweight music client for Subsonic, designed and built natively for Android.
About
+ Always on display
Transcode format
If enabled, Tempo will not force download the track with the transcode settings below.
Prioritize server settings used for streaming in downloads
diff --git a/app/src/main/res/xml/global_preferences.xml b/app/src/main/res/xml/global_preferences.xml
index ef6c8f15..683247ca 100644
--- a/app/src/main/res/xml/global_preferences.xml
+++ b/app/src/main/res/xml/global_preferences.xml
@@ -31,6 +31,11 @@
app:title="@string/settings_theme"
app:useSimpleSummaryProvider="true" />
+
+