From c304f5cd112e59892a068ca57d27283b098a584e Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 12 Sep 2021 18:15:00 +0200 Subject: [PATCH] Check for Sony Stamina mode --- .../java/eu/faircode/email/FragmentSetup.java | 14 ++++++++++++ .../main/java/eu/faircode/email/Helper.java | 22 +++++++++++++++++++ app/src/main/res/layout/fragment_setup.xml | 17 +++++++++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index a68d2b089e..44a05fc0f5 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -97,6 +97,7 @@ public class FragmentSetup extends FragmentBase { private Button btnInexactAlarms; private Button btnBackgroundRestricted; private Button btnDataSaver; + private TextView tvStamina; private TextView tvBatteryUsage; private TextView tvSyncStopped; @@ -161,6 +162,7 @@ public class FragmentSetup extends FragmentBase { btnInexactAlarms = view.findViewById(R.id.btnInexactAlarms); btnBackgroundRestricted = view.findViewById(R.id.btnBackgroundRestricted); btnDataSaver = view.findViewById(R.id.btnDataSaver); + tvStamina = view.findViewById(R.id.tvStamina); tvBatteryUsage = view.findViewById(R.id.tvBatteryUsage); tvSyncStopped = view.findViewById(R.id.tvSyncStopped); @@ -444,6 +446,14 @@ public class FragmentSetup extends FragmentBase { } }); + tvStamina.setPaintFlags(tvStamina.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + tvStamina.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Helper.view(v.getContext(), Uri.parse(Helper.DONTKILL_URI + "sony"), true); + } + }); + tvBatteryUsage.setPaintFlags(tvBatteryUsage.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); tvBatteryUsage.setOnClickListener(new View.OnClickListener() { @Override @@ -530,6 +540,7 @@ public class FragmentSetup extends FragmentBase { grpInexactAlarms.setVisibility(View.GONE); grpBackgroundRestricted.setVisibility(View.GONE); grpDataSaver.setVisibility(View.GONE); + tvStamina.setVisibility(View.GONE); setContactsPermission(hasPermission(Manifest.permission.READ_CONTACTS)); @@ -663,6 +674,9 @@ public class FragmentSetup extends FragmentBase { grpDataSaver.setVisibility(ConnectionHelper.isDataSaving(getContext()) ? View.VISIBLE : View.GONE); + + tvStamina.setVisibility(Helper.isStaminaEnabled(getContext()) + ? View.VISIBLE : View.GONE); } @Override diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index af71b122c6..70746ae749 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -985,6 +985,27 @@ public class Helper { return "Blackview".equalsIgnoreCase(Build.MANUFACTURER); } + static boolean isSony() { + return "sony".equalsIgnoreCase(Build.MANUFACTURER); + } + + static boolean isStaminaEnabled(Context context) { + // https://dontkillmyapp.com/sony + if (BuildConfig.DEBUG) + return true; + + if (!isSony()) + return false; + + try { + ContentResolver resolver = context.getContentResolver(); + return (Settings.Secure.getInt(resolver, "somc.stamina_mode", 0) > 0); + } catch (Throwable ex) { + Log.e(ex); + return false; + } + } + static boolean isSurfaceDuo() { return ("Microsoft".equalsIgnoreCase(Build.MANUFACTURER) && "Surface Duo".equals(Build.MODEL)); } @@ -1003,6 +1024,7 @@ public class Helper { // Vivo isRealme() || isBlackview() || + isSony() || BuildConfig.DEBUG); } diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml index 43e46ac05f..4c91be0afc 100644 --- a/app/src/main/res/layout/fragment_setup.xml +++ b/app/src/main/res/layout/fragment_setup.xml @@ -778,6 +778,21 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvDataSaver" /> + + + app:layout_constraintTop_toBottomOf="@id/tvStamina" /> Alarms & reminders are disabled Background restrictions are enabled Data saver is enabled + Stamina mode is enabled Show advanced options Go to inbox Go