package com.iflytek.itma.android.utils;
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 android.os.Handler;
import com.iflytek.itma.android.log.LogUtils;
public class NetChangeReceiver {
public static final int NET_CHANGE_INTEVER = 3000;
private int mNetChangeIntever = NET_CHANGE_INTEVER;
private Context mContext;
private boolean isConnected = false;
private Handler mHandler = new Handler();
private OnNetConnectedChange mOnNetConnectedChange;
private Runnable runnable = new Runnable() {
@Override
public void run() {
boolean connectState = isConnected(mContext);
LogUtils.d("run() called connectState = [%s]", connectState);
if (isConnected != connectState) {
mOnNetConnectedChange.onNetWorkStateChange(connectState);
}
isConnected = connectState;
}
};
private BroadcastReceiver netWorkStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, Intent intent) {
mHandler.removeCallbacks(runnable);
if (isConnected(context)) {
mHandler.post(runnable);
} else {
mHandler.postDelayed(runnable, mNetChangeIntever);
}
}
};
public NetChangeReceiver(Context context) {
mContext = context;
isConnected = isConnected(mContext);
}
public int getNetChangeIntever() {
return mNetChangeIntever;
}
public void setNetChangeIntever(int netChangeIntever) {
mNetChangeIntever = netChangeIntever;
}
/**
* 是否存在已经连接上的网络, 不论是wifi/cmwap/cmnet还是其他
*
* @return
*/
public boolean isConnected(Context c) {
if (c == null) {
return false;
}
ConnectivityManager connectivityManager = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = connectivityManager.getActiveNetworkInfo();
return ni != null && ni.isConnected();
}
public void registerNetChangeReceiver(OnNetConnectedChange onNetConnectedChange) {
this.mOnNetConnectedChange = onNetConnectedChange;
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
mContext.registerReceiver(netWorkStateReceiver, filter);
}
public void unRegisterNetChangeReceiver() {
this.mOnNetConnectedChange = null;
mHandler.removeCallbacks(runnable);
mContext.unregisterReceiver(netWorkStateReceiver);
}
public interface OnNetConnectedChange {
void onNetWorkStateChange(boolean isConnected);
}
}
NetChangeReceiver.zip_NetChangeReceiver_android 网络
版权申诉
122 浏览量
2022-09-21
00:27:15
上传
评论
收藏 1KB ZIP 举报
我虽横行却不霸道
- 粉丝: 74
- 资源: 1万+
最新资源
- 计科11班未参与实习认知名单.xlsx
- Java 使用回溯法解决01背包问题(含算法原理和代码)
- 毕业答辩模板2016超值实用黑板风毕业论文答辩模版
- 大学生创新创业的心得.doc
- MMDF3N06HDR2G-VB一款SOP8封装2个N-Channel场效应MOS管
- 毕业答辩模板2016超值实用黑板风毕业论文答辩模版(赠手绘图表)
- 毕业答辩模板(中文版式)黑白风毕业论文答辩通用PPT模板B-14
- MMDF3N04HDR2G-VB一款SOP8封装2个N-Channel场效应MOS管
- MMDF3301-VB一款SOP8封装2个P-Channel场效应MOS管
- 毕业答辩模板(医药专业)红色医药论文答辩模板
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0