package com.stx.openeyes.utils;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
* Created by xhb on 2016/1/20.
* 网络状态工具类
*/
public class NetConnectedUtils {
/**
* 1.判断网络是否连接
*
* @param context 上下文,通过它获取到ConnectivityManager
* @return true 网络连接成功 false 网络连接失败
*/
public static boolean isNetConnected(Context context) {
boolean ret = false;
//1.获取到ConnectivityManager
ConnectivityManager connectivityManager
= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取到当前活动的网络(即正在传输数据的网络),若存在,那么可以确定网络连接存在;
//connectivityManager.getActiveNetwork(); 版本23新添加的,不建议这么早使用
//返回当前正在传输数据的网络连接的信息,API 1 就存在了
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo == null) {//无网络连接
return ret;
}
//网络是否可用
// networkInfo.isAvailable();
//网络是否连接
// networkInfo.isConnected();
//只有两个都满足才能确保网络是连接上的
ret = networkInfo.isAvailable() & networkInfo.isConnected();
return ret;
}
/**
* 2.判断手机网络是否存在
*
* @param context 上下文
* @return 返回 false 无手机网络 true 有手机网络
*/
public static boolean isPhoneNetConnected(Context context) {
int typeMobile = ConnectivityManager.TYPE_MOBILE;//手机网络类型
return isNetworkConnected(context, typeMobile);
}
/**
* 2.判断WIFI网络是否存在
*
* @param context 上下文
* @return 返回 false 无wifi网络 true 有wifi网络
*/
public static boolean isWifiNetConnected(Context context) {
int typeMobile = ConnectivityManager.TYPE_WIFI;//WIFI网络类型
return isNetworkConnected(context, typeMobile);
}
/**
* 返回网络是否连接
*
* @param context 上下文
* @param typeMobile 网络类型
* @return true 有网络连接 false 无网络连接
*/
private static boolean isNetworkConnected(Context context, int typeMobile) {
boolean ret = false;
//判断是否有网络
if (!isNetConnected(context)) {
//如果没有网络连接,直接返回
return ret;
}
//获取到网络连接管理器
ConnectivityManager connectManger = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//当获取到网络连接信息的时候,可以获取到某一个类型的网络连接
//获取到手机网络的信息
NetworkInfo networkInfo = connectManger.getNetworkInfo(typeMobile);
//如果不存在,那么就没有连接了
if (networkInfo == null) {
return ret;
}
//判断手机网络是否可用
ret = networkInfo.isAvailable() & networkInfo.isConnected();
return ret;
}
}