package com.quickblox.sample.groupchatwebrtc.util;
import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
public class NetworkConnectionChecker {
private final ConnectivityManager connectivityManager;
private Set<OnConnectivityChangedListener> listeners = new CopyOnWriteArraySet<>();
public NetworkConnectionChecker(Application context) {
this.connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
context.registerReceiver(new NetworkStateReceiver(), intentFilter);
}
public void registerListener(OnConnectivityChangedListener listener) {
listeners.add(listener);
listener.connectivityChanged(isConnectedNow());
}
public void unregisterListener(OnConnectivityChangedListener listener) {
listeners.remove(listener);
}
public boolean isConnectedNow() {
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
public interface OnConnectivityChangedListener {
void connectivityChanged(boolean availableNow);
}
private class NetworkStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
boolean isConnectedNow = isConnectedNow();
for (OnConnectivityChangedListener listener : listeners) {
listener.connectivityChanged(isConnectedNow);
}
}
}
}