Listen for wifi AP state changes.

We won't necessarily receive a connectivity change event when the wifi AP is enabled.
This commit is contained in:
akwizgran
2018-03-26 17:19:17 +01:00
parent 467fdb6468
commit f25b16e680

View File

@@ -20,12 +20,15 @@ import javax.annotation.Nullable;
import static android.content.Context.CONNECTIVITY_SERVICE; import static android.content.Context.CONNECTIVITY_SERVICE;
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
import static android.net.ConnectivityManager.TYPE_WIFI; import static android.net.ConnectivityManager.TYPE_WIFI;
import static android.net.wifi.WifiManager.EXTRA_WIFI_STATE;
import static java.util.logging.Level.INFO; import static java.util.logging.Level.INFO;
import static org.briarproject.bramble.util.AndroidUtils.logNetworkState; import static org.briarproject.bramble.util.AndroidUtils.logNetworkState;
@NotNullByDefault @NotNullByDefault
class AndroidLanTcpPlugin extends LanTcpPlugin { class AndroidLanTcpPlugin extends LanTcpPlugin {
private static final String WIFI_AP_STATE_ACTION =
"android.net.wifi.WIFI_AP_STATE_CHANGED";
private static final Logger LOG = private static final Logger LOG =
Logger.getLogger(AndroidLanTcpPlugin.class.getName()); Logger.getLogger(AndroidLanTcpPlugin.class.getName());
@@ -47,7 +50,9 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
running = true; running = true;
// Register to receive network status events // Register to receive network status events
networkStateReceiver = new NetworkStateReceiver(); networkStateReceiver = new NetworkStateReceiver();
IntentFilter filter = new IntentFilter(CONNECTIVITY_ACTION); IntentFilter filter = new IntentFilter();
filter.addAction(CONNECTIVITY_ACTION);
filter.addAction(WIFI_AP_STATE_ACTION);
appContext.registerReceiver(networkStateReceiver, filter); appContext.registerReceiver(networkStateReceiver, filter);
if (LOG.isLoggable(INFO)) logNetworkState(appContext, LOG); if (LOG.isLoggable(INFO)) logNetworkState(appContext, LOG);
} }
@@ -66,6 +71,7 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
public void onReceive(Context ctx, Intent i) { public void onReceive(Context ctx, Intent i) {
if (!running) return; if (!running) return;
if (LOG.isLoggable(INFO)) { if (LOG.isLoggable(INFO)) {
if (CONNECTIVITY_ACTION.equals(i.getAction())) {
LOG.info("Connectivity change"); LOG.info("Connectivity change");
Bundle extras = i.getExtras(); Bundle extras = i.getExtras();
if (extras != null) { if (extras != null) {
@@ -73,6 +79,11 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
for (String key : extras.keySet()) for (String key : extras.keySet())
LOG.info("\t" + key + ": " + extras.get(key)); LOG.info("\t" + key + ": " + extras.get(key));
} }
} else if (WIFI_AP_STATE_ACTION.equals(i.getAction())) {
int state = i.getIntExtra(EXTRA_WIFI_STATE, 0);
if (state == 13) LOG.info("Wifi AP enabled");
else LOG.info("Wifi AP state " + state);
}
logNetworkState(appContext, LOG); logNetworkState(appContext, LOG);
} }
Object o = ctx.getSystemService(CONNECTIVITY_SERVICE); Object o = ctx.getSystemService(CONNECTIVITY_SERVICE);