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 4e7b9290..17bdb6a0 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 @@ -22,6 +22,7 @@ import androidx.media3.session.SessionToken; import com.cappielloantonio.tempo.R; import com.cappielloantonio.tempo.service.DownloaderService; import com.cappielloantonio.tempo.service.MediaService; +import com.cappielloantonio.tempo.util.Preferences; import com.cappielloantonio.tempo.util.UIUtil; import com.google.android.gms.cast.framework.CastContext; import com.google.android.material.elevation.SurfaceColors; @@ -45,11 +46,6 @@ public class BaseActivity extends AppCompatActivity { super.onStart(); setNavigationBarColor(); initializeBrowser(); - } - - @Override - protected void onResume() { - super.onResume(); checkBatteryOptimization(); checkPermission(); } @@ -61,7 +57,7 @@ public class BaseActivity extends AppCompatActivity { } private void checkBatteryOptimization() { - if (detectBatteryOptimization()) { + if (detectBatteryOptimization() && Preferences.askForOptimization()) { showBatteryOptimizationDialog(); } } @@ -84,8 +80,9 @@ public class BaseActivity extends AppCompatActivity { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(R.string.activity_battery_optimizations_summary) .setTitle(R.string.activity_battery_optimizations_title) - .setNegativeButton(R.string.activity_negative_button, null) - .setPositiveButton(R.string.activity_neutral_button, (dialog, id) -> openPowerSettings()) + .setNeutralButton(R.string.battery_optimization_neutral_button, (dialog, id) -> Preferences.dontAskForOptimization()) + .setNegativeButton(R.string.battery_optimization_negative_button, null) + .setPositiveButton(R.string.battery_optimization_positive_button, (dialog, id) -> openPowerSettings()) .show(); } 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 ff22c0f0..95c29eeb 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt +++ b/app/src/main/java/com/cappielloantonio/tempo/util/Preferences.kt @@ -10,6 +10,7 @@ object Preferences { private const val TOKEN = "token" private const val SALT = "salt" private const val LOW_SECURITY = "low_security" + private const val BATTERY_OPTIMIZATION = "battery_optimization" private const val SERVER_ID = "server_id" private const val PLAYBACK_SPEED = "playback_speed" private const val SKIP_SILENCE = "skip_silence" @@ -100,6 +101,16 @@ object Preferences { App.getInstance().preferences.edit().putString(SERVER_ID, serverId).apply() } + @JvmStatic + fun askForOptimization(): Boolean? { + return App.getInstance().preferences.getBoolean(BATTERY_OPTIMIZATION, true) + } + + @JvmStatic + fun dontAskForOptimization() { + App.getInstance().preferences.edit().putBoolean(BATTERY_OPTIMIZATION, false).apply() + } + @JvmStatic fun getPlaybackSpeed(): Float { return App.getInstance().preferences.getFloat(PLAYBACK_SPEED, 1f) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f6c8b185..bbda93f0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,8 +2,9 @@ Please disable battery optimizations for media playback while the screen is off. Battery Optimizations Offline mode - Ignore - Disable + Ignore + Disable + Don\'t ask again Add to queue Download all Go to artist