package com.mystudy.kibi.utils;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;
/**
* Created by KIBI熊 on 16/6/27.
*/
public class NetworkStateUtil {
static ConnectivityManager connectivityManager = null;
static TelephonyManager telephonyManager = null;
static NetworkInfo curNetworkInfo = null;
static NetworkInfo wifiNetworkInfo = null;
static NetworkInfo mobileNetworkInfo = null;
public static final int NONE_TYPE = -1;
public static final int WIFI_TYPE = 0;
public static final int WAP_TYPE = 1;
public static final int NET_TYPE = 2;
/**
* 判断当前是否连接网络且可用
* @param context
* @return
*/
public static boolean isNetworkConnected(Context context){
if(context != null){
connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
curNetworkInfo = connectivityManager.getActiveNetworkInfo();
if(curNetworkInfo != null){
return curNetworkInfo.isAvailable();
}
}
return false;
}
/**
* 判断该设备的Wi-Fi功能是否可用
* 无论连没连到Wi-Fi,只要设备打开了Wi-Fi功能,返回的都是true
*
* @param context
* @return
*/
public static boolean isWIFIAvailable(Context context){
if(context != null){
connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
wifiNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(wifiNetworkInfo != null){
return wifiNetworkInfo.isAvailable();
}
}
return false;
}
/**
* 判断是否连接到了可用的Wi-Fi
* @param context
* @return
*/
public static boolean isWIFIConnected(Context context){
if(context != null){
if(isNetworkConnected(context)){
return curNetworkInfo.getType()==ConnectivityManager.TYPE_WIFI;
}
}
return false;
}
/**
* 判断移动网络是否可用,即MOBILE网络
* 无论有没有打开移动数据网络,只要手机里有SIM卡,返回的都是true
* @param context
* @return
*/
public static boolean isMobileAvailable(Context context){
if (context != null){
connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
mobileNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if(mobileNetworkInfo != null){
return mobileNetworkInfo.isAvailable();
}
}
return false;
}
/**
* 获取当前网络类型
*
* 类型分为: -1:无网络 0:Wi-Fi 1:WAP 2:NET
*
* 手机上网net和wap的区别:
* wap是老版网络协议的产物。主要针对老手机用户,net是微软的产
* 物,是互联网,一般手机用wap,智能机用net,当然智能机也可以用
* wap,wap稳定,net网速快。
* 打个比方,GPRS是一辆车,net和wap就是两条路;net是高速公路,
* wap是一般的水泥路;前者快,收费高,后者收费较少,但速度慢。
*
* @param context
* @return
*/
public static int getNetworkTyoe(Context context){
if(context != null){
connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
curNetworkInfo = connectivityManager.getActiveNetworkInfo();
if(curNetworkInfo != null){
switch (curNetworkInfo.getType()){
case ConnectivityManager.TYPE_WIFI:
return WIFI_TYPE;
case ConnectivityManager.TYPE_MOBILE:
if(curNetworkInfo.getExtraInfo().toLowerCase().contains("net")){
return NET_TYPE;
}else {
return WAP_TYPE;
}
}
}
}
return NONE_TYPE;
}
/**
* 获取设备SIM卡的商网络服务商
* @param context
* @return
*/
public static String getOperatorNetworkType(Context context){
if(context != null){
telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String networkOperatorName = telephonyManager.getNetworkOperatorName();
switch (telephonyManager.getNetworkType()){
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
return networkOperatorName+"2G";
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
return networkOperatorName+"3G";
case TelephonyManager.NETWORK_TYPE_LTE:
return networkOperatorName+"4G";
}
}
return "请插入SIM卡";
}
}
手机网络状态查询工具类
最新推荐文章于 2024-09-02 16:50:21 发布