80 lines
2.3 KiB
Java
80 lines
2.3 KiB
Java
package com.android.nebulasdk;
|
|
|
|
import android.content.BroadcastReceiver;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.IntentFilter;
|
|
import android.net.ConnectivityManager;
|
|
import android.net.wifi.WifiManager;
|
|
|
|
import com.android.util.NetworkType;
|
|
import com.android.util.NetworkUtil;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public class NetStateChangeReceiver extends BroadcastReceiver {
|
|
|
|
private static class InstanceHolder {
|
|
private static final NetStateChangeReceiver INSTANCE = new NetStateChangeReceiver();
|
|
}
|
|
|
|
private List<NetStateChangeObserver> mObservers = new ArrayList<>();
|
|
|
|
@Override
|
|
public void onReceive(Context context, Intent intent) {
|
|
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
|
|
NetworkType networkType = NetworkUtil.getNetworkType(context);
|
|
notifyObservers(networkType);
|
|
}
|
|
}
|
|
|
|
public static void registerReceiver(Context context) {
|
|
IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
|
|
context.registerReceiver(InstanceHolder.INSTANCE, intentFilter);
|
|
}
|
|
|
|
public static void unRegisterReceiver(Context context) {
|
|
try {
|
|
context.unregisterReceiver(InstanceHolder.INSTANCE);
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
}
|
|
|
|
}
|
|
|
|
public static void registerObserver(NetStateChangeObserver observer) {
|
|
if (observer == null) {
|
|
return;
|
|
}
|
|
if (!InstanceHolder.INSTANCE.mObservers.contains(observer)) {
|
|
InstanceHolder.INSTANCE.mObservers.add(observer);
|
|
}
|
|
}
|
|
|
|
public static void unRegisterObserver(NetStateChangeObserver observer) {
|
|
if (observer == null) {
|
|
return;
|
|
}
|
|
if (InstanceHolder.INSTANCE.mObservers == null) {
|
|
return;
|
|
}
|
|
InstanceHolder.INSTANCE.mObservers.remove(observer);
|
|
}
|
|
|
|
private void notifyObservers(NetworkType networkType) {
|
|
if (networkType == NetworkType.NETWORK_NO) {
|
|
for (NetStateChangeObserver observer : mObservers) {
|
|
observer.onNetDisconnected();
|
|
}
|
|
} else {
|
|
for (NetStateChangeObserver observer : mObservers) {
|
|
observer.onNetConnected(networkType);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|