From 74f8e84a9b361c136795edee059cef49cb9d1447 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 29 Jun 2023 10:57:49 -0300 Subject: [PATCH] React to device light idle mode in DozeWatchdog as well --- .../briar/android/DozeWatchdogImpl.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/DozeWatchdogImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/DozeWatchdogImpl.java index 16aebd676..01e406d82 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/DozeWatchdogImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/DozeWatchdogImpl.java @@ -12,9 +12,12 @@ import org.briarproject.briar.api.android.DozeWatchdog; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; +import androidx.annotation.RequiresApi; + import static android.content.Context.POWER_SERVICE; import static android.os.Build.VERSION.SDK_INT; import static android.os.PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED; +import static android.os.PowerManager.ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED; import static android.os.PowerManager.ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED; import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; @@ -42,6 +45,7 @@ class DozeWatchdogImpl implements DozeWatchdog, Service { if (SDK_INT < 23) return; IntentFilter filter = new IntentFilter(ACTION_DEVICE_IDLE_MODE_CHANGED); if (SDK_INT >= 33) { + filter.addAction(ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED); filter.addAction(ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED); } appContext.registerReceiver(receiver, filter); @@ -63,14 +67,27 @@ class DozeWatchdogImpl implements DozeWatchdog, Service { (PowerManager) appContext.getSystemService(POWER_SERVICE); if (ACTION_DEVICE_IDLE_MODE_CHANGED.equals(action)) { if (pm.isDeviceIdleMode()) dozed.set(true); - } else if (SDK_INT >= 33 && - ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED.equals(action)) { + } else if (SDK_INT >= 33) { + onReceive33(action, pm); + } + } + + @RequiresApi(33) + private void onReceive33(String action, PowerManager pm) { + if (ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED.equals(action)) { if (pm.isLowPowerStandbyEnabled()) { if (LOG.isLoggable(WARNING)) { LOG.warning("System is in low power standby mode"); } dozed.set(true); } + } else if (ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED.equals(action)) { + if (pm.isDeviceLightIdleMode()) { + if (LOG.isLoggable(WARNING)) { + LOG.warning("System is in light idle mode"); + } + dozed.set(true); + } } } }