package xyz.yhsj.yhutils.phone;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
/**
* 用于实时监测网络变化的工具类,用广播用,使用时请注意注册广播和设置监听器
*
* Created by LOVE on 2015/5/5 005.
*/
public class NetWorkUtilsBroadcast {
private static NetWorkUtilsBroadcast netWork_broadcast;
private NetworkBroadcastReceiver networkBroadcastReceiver;
private Context context;
private OnNetChengeListener listener;
private NetWorkUtilsBroadcast(Context context) {
networkBroadcastReceiver = new NetworkBroadcastReceiver();
this.context = context;
}
/**
* 得到单例对象
*
* @param context
* @return
*/
public static synchronized NetWorkUtilsBroadcast getInstance(Context context) {
if (netWork_broadcast == null) {
netWork_broadcast = new NetWorkUtilsBroadcast(context);
}
return netWork_broadcast;
}
/**
* 注册网络状态监听广播
*/
public void registerNetworkReceiver() {
IntentFilter filter = new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION);
context.registerReceiver(networkBroadcastReceiver, filter);
}
/**
* 解除网络状态广播监听
*/
public void unRegisterNetworkReceiver() {
context.unregisterReceiver(networkBroadcastReceiver);
}
/**
* 设置网络状态变化监听器
*
* @param listener
*/
public void setListener(OnNetChengeListener listener) {
this.listener = listener;
}
/**
* 网络状态改变回调接口
*/
public static interface OnNetChengeListener {
void OnNetChenged(String info);
}
/**
* 网络监听广播
*/
class NetworkBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (listener != null) {
listener.OnNetChenged(NetWorkUtils.getNetworkTypeName(context));
}
}
}
}