diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/SplashActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/SplashActivity.java
index 58103dce..67965aeb 100644
--- a/app/src/main/java/com/dkanada/gramophone/ui/activities/SplashActivity.java
+++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/SplashActivity.java
@@ -1,8 +1,13 @@
package com.dkanada.gramophone.ui.activities;
+import android.app.AlertDialog;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
+import android.os.Build;
import android.os.Bundle;
+import android.os.PowerManager;
+import android.provider.Settings;
import com.dkanada.gramophone.App;
import com.dkanada.gramophone.R;
@@ -46,8 +51,49 @@ public class SplashActivity extends AbsBaseActivity {
credentialProvider = new AndroidCredentialProvider(jsonSerializer, this, logger);
connectionManager = App.getConnectionManager(this, jsonSerializer, logger, httpClient);
+ }
- login();
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (detectBatteryOptimization()) {
+ showBatteryOptimizationDialog();
+ } else {
+ login();
+ }
+ }
+
+ private boolean detectBatteryOptimization() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ String packageName = getPackageName();
+ PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
+ return !pm.isIgnoringBatteryOptimizations(packageName);
+ }
+ return false;
+ }
+
+ private void showBatteryOptimizationDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(SplashActivity.this);
+ builder.setMessage(R.string.action_disable_battery_optimizations_message)
+ .setTitle(R.string.action_disable_battery_optimizations_title)
+ .setNegativeButton(R.string.action_cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ login();
+ }
+ })
+ .setPositiveButton(R.string.action_go_to_optimization_settings, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ openPowerSettings(SplashActivity.this);
+ }
+ })
+ .show();
+ }
+
+ private void openPowerSettings(Context context) {
+ Intent intent = new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
+ context.startActivity(intent);
}
public void login() {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 45d05fa8..21ba0570 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -44,6 +44,10 @@
Sleep timer
Set
New playlist
+ Disable battery optimizations
+ Please disable battery optimizations for media playback while the screen is off
+ Cancel
+ Go to settings
Albums
Artists