From dcd6fda04638eaf4e5503cf36b94e77520175bc1 Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Thu, 2 Aug 2018 11:55:40 +0100
Subject: [PATCH] Check connectivity after entering or leaving doze mode.

---
 .../bramble/network/AndroidNetworkManager.java      | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java
index fdc521be65..2001b559cb 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java
@@ -114,8 +114,7 @@ class AndroidNetworkManager implements NetworkManager, Service {
 			String action = i.getAction();
 			if (LOG.isLoggable(INFO)) LOG.info("Received broadcast " + action);
 			updateConnectionStatus();
-			// TODO: Also schedule update after idle mode changes
-			if (isSleepEvent(i)) {
+			if (isSleepOrDozeEvent(i)) {
 				scheduleConnectionStatusUpdate(1, MINUTES);
 			} else if (isApEnabledEvent(i)) {
 				// The state change may be broadcast before the AP address is
@@ -125,9 +124,13 @@ class AndroidNetworkManager implements NetworkManager, Service {
 			}
 		}
 
-		private boolean isSleepEvent(Intent i) {
-			return ACTION_SCREEN_ON.equals(i.getAction()) ||
-					ACTION_SCREEN_OFF.equals(i.getAction());
+		private boolean isSleepOrDozeEvent(Intent i) {
+			String action = i.getAction();
+			boolean isSleep = ACTION_SCREEN_ON.equals(action) ||
+					ACTION_SCREEN_OFF.equals(action);
+			boolean isDoze = SDK_INT >= 23 &&
+					ACTION_DEVICE_IDLE_MODE_CHANGED.equals(action);
+			return isSleep || isDoze;
 		}
 
 		private boolean isApEnabledEvent(Intent i) {
-- 
GitLab