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