From 16d56535caa4e0058a09da019048a75c925357c3 Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Thu, 2 Aug 2018 12:00:38 +0100 Subject: [PATCH] Check connectivity after all AP state changes. --- .../bramble/network/AndroidNetworkManager.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 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 2001b559cb..f8e52e965a 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 @@ -29,7 +29,6 @@ import static android.content.Intent.ACTION_SCREEN_OFF; import static android.content.Intent.ACTION_SCREEN_ON; import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; import static android.net.ConnectivityManager.TYPE_WIFI; -import static android.net.wifi.WifiManager.EXTRA_WIFI_STATE; import static android.os.Build.VERSION.SDK_INT; import static android.os.PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED; import static java.util.concurrent.TimeUnit.MINUTES; @@ -44,7 +43,6 @@ class AndroidNetworkManager implements NetworkManager, Service { // See android.net.wifi.WifiManager private static final String WIFI_AP_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_AP_STATE_CHANGED"; - private static final int WIFI_AP_STATE_ENABLED = 13; private final ScheduledExecutorService scheduler; private final EventBus eventBus; @@ -114,18 +112,17 @@ class AndroidNetworkManager implements NetworkManager, Service { String action = i.getAction(); if (LOG.isLoggable(INFO)) LOG.info("Received broadcast " + action); updateConnectionStatus(); - if (isSleepOrDozeEvent(i)) { + if (isSleepOrDozeEvent(action)) { + // Allow time for the network to be enabled or disabled scheduleConnectionStatusUpdate(1, MINUTES); - } else if (isApEnabledEvent(i)) { + } else if (isApEvent(action)) { // The state change may be broadcast before the AP address is // visible, so delay handling the event - // TODO: Wait longer, and also wait after stopping - see #1301 - scheduleConnectionStatusUpdate(1, SECONDS); + scheduleConnectionStatusUpdate(5, SECONDS); } } - private boolean isSleepOrDozeEvent(Intent i) { - String action = i.getAction(); + private boolean isSleepOrDozeEvent(String action) { boolean isSleep = ACTION_SCREEN_ON.equals(action) || ACTION_SCREEN_OFF.equals(action); boolean isDoze = SDK_INT >= 23 && @@ -133,9 +130,8 @@ class AndroidNetworkManager implements NetworkManager, Service { return isSleep || isDoze; } - private boolean isApEnabledEvent(Intent i) { - return WIFI_AP_STATE_CHANGED_ACTION.equals(i.getAction()) && - i.getIntExtra(EXTRA_WIFI_STATE, 0) == WIFI_AP_STATE_ENABLED; + private boolean isApEvent(String action) { + return WIFI_AP_STATE_CHANGED_ACTION.equals(action); } } } -- GitLab