java判断是否2g_Android 判断用户2G/3G/4G移动数据网络

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.text.DecimalFormat;

import java.util.List;

import android.content.Context;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import android.net.wifi.WifiInfo;

import android.net.wifi.WifiManager;

import android.telephony.NeighboringCellInfo;

import android.telephony.TelephonyManager;

import android.telephony.cdma.CdmaCellLocation;

import android.telephony.gsm.GsmCellLocation;

import android.util.Log;public classNetWorkUtil {public staticboolean isWifiAvailable() {

ConnectivityManager connectivityManager=(ConnectivityManager) ConfigManager

.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo();return (networkInfo != null && networkInfo.isConnected() &&networkInfo

.getType()==ConnectivityManager.TYPE_WIFI);

}/**

* 获取MAC地址

*

* @param context

* @return*/

public staticString getMacAddress(Context context) {if (context == null) {return "";

}

String localMac= null;if(isWifiAvailable()) {

localMac=getWifiMacAddress(context);

}if (localMac != null && localMac.length() > 0) {

localMac= localMac.replace(":", "-").toLowerCase();returnlocalMac;

}

localMac=getMacFromCallCmd();if (localMac != null) {

localMac= localMac.replace(":", "-").toLowerCase();

}returnlocalMac;

}private staticString getWifiMacAddress(Context context) {

String localMac= null;try{

WifiManager wifi=(WifiManager) context

.getSystemService(Context.WIFI_SERVICE);

WifiInfo info=wifi.getConnectionInfo();if(wifi.isWifiEnabled()) {

localMac=info.getMacAddress();if (localMac != null) {

localMac= localMac.replace(":", "-").toLowerCase();returnlocalMac;

}

}

}catch(Exception e) {

e.printStackTrace();

}return null;

}/**

* 通过callCmd("busybox ifconfig","HWaddr")获取mac地址

*

* @attention 需要设备装有busybox工具

* @return Mac Address*/

private staticString getMacFromCallCmd() {

String result= "";

result= callCmd("busybox ifconfig", "HWaddr");if (result == null || result.length() <= 0) {return null;

}

DebugLog.v("tag", "cmd result :" +result);//对该行数据进行解析//例如:eth0 Link encap:Ethernet HWaddr 00:16:E8:3E:DF:67

if (result.length() > 0 && result.contains("HWaddr") == true) {

String Mac= result.substring(result.indexOf("HWaddr") + 6,

result.length()- 1);if (Mac.length() > 1) {

result= Mac.replaceAll(" ", "");

}

}returnresult;

}public staticString callCmd(String cmd, String filter) {

String result= "";

String line= "";try{

Process proc=Runtime.getRuntime().exec(cmd);

InputStreamReaderis = newInputStreamReader(proc.getInputStream());

BufferedReader br= new BufferedReader(is);//执行命令cmd,只取结果中含有filter的这一行

while ((line = br.readLine()) != null

&& line.contains(filter) == false) {

}

result=line;

}catch(Exception e) {

e.printStackTrace();

}returnresult;

}/**

* 网络是否可用

*

* @param context

* @return*/

public staticboolean IsNetWorkEnable(Context context) {try{

ConnectivityManager connectivity=(ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivity == null) {

ToastUtil.showMessage(context,"无法连接网络");return false;

}

NetworkInfo info=connectivity.getActiveNetworkInfo();if (info != null &&info.isConnected()) {//判断当前网络是否已经连接

if (info.getState() ==NetworkInfo.State.CONNECTED) {return true;

}

}

}catch(Exception e) {

e.printStackTrace();

}

ToastUtil.showMessage(context,"无法连接网络");return false;

}private static final int NETWORK_TYPE_UNAVAILABLE = -1;//private static final int NETWORK_TYPE_MOBILE = -100;

private static final int NETWORK_TYPE_WIFI = -101;private static final int NETWORK_CLASS_WIFI = -101;private static final int NETWORK_CLASS_UNAVAILABLE = -1;/** Unknown network class.*/

private static final int NETWORK_CLASS_UNKNOWN = 0;/** Class of broadly defined "2G" networks.*/

private static final int NETWORK_CLASS_2_G = 1;/** Class of broadly defined "3G" networks.*/

private static final int NETWORK_CLASS_3_G = 2;/** Class of broadly defined "4G" networks.*/

private static final int NETWORK_CLASS_4_G = 3;private static DecimalFormat df = new DecimalFormat("#.##");//适配低版本手机

/** Network type is unknown*/

public static final int NETWORK_TYPE_UNKNOWN = 0;/** Current network is GPRS*/

public static final int NETWORK_TYPE_GPRS = 1;/** Current network is EDGE*/

public static final int NETWORK_TYPE_EDGE = 2;/** Current network is UMTS*/

public static final int NETWORK_TYPE_UMTS = 3;/** Current network is CDMA: Either IS95A or IS95B*/

public static final int NETWORK_TYPE_CDMA = 4;/** Current network is EVDO revision 0*/

public static final int NETWORK_TYPE_EVDO_0 = 5;/** Current network is EVDO revision A*/

public static final int NETWORK_TYPE_EVDO_A = 6;/** Current network is 1xRTT*/

public static final int NETWORK_TYPE_1xRTT = 7;/** Current network is HSDPA*/

public static final int NETWORK_TYPE_HSDPA = 8;/** Current network is HSUPA*/

public static final int NETWORK_TYPE_HSUPA = 9;/** Current network is HSPA*/

public static final int NETWORK_TYPE_HSPA = 10;/** Current network is iDen*/

public static final int NETWORK_TYPE_IDEN = 11;/** Current network is EVDO revision B*/

public static final int NETWORK_TYPE_EVDO_B = 12;/** Current network is LTE*/

public static final int NETWORK_TYPE_LTE = 13;/** Current network is eHRPD*/

public static final int NETWORK_TYPE_EHRPD = 14;/** Current network is HSPA+*/

public static final int NETWORK_TYPE_HSPAP = 15;/**

* 格式化大小

*

* @param size

* @return*/

public static String formatSize(longsize) {

String unit= "B";float len =size;if (len > 900) {

len/=1024f;

unit= "KB";

}if (len > 900) {

len/=1024f;

unit= "MB";

}if (len > 900) {

len/=1024f;

unit= "GB";

}if (len > 900) {

len/=1024f;

unit= "TB";

}return df.format(len) +unit;

}public static String formatSizeBySecond(longsize) {

String unit= "B";float len =size;if (len > 900) {

len/=1024f;

unit= "KB";

}if (len > 900) {

len/=1024f;

unit= "MB";

}if (len > 900) {

len/=1024f;

unit= "GB";

}if (len > 900) {

len/=1024f;

unit= "TB";

}return df.format(len) + unit + "/s";

}public static String format(longsize) {

String unit= "B";float len =size;if (len > 1000) {

len/=1024f;

unit= "KB";if (len > 1000) {

len/=1024f;

unit= "MB";if (len > 1000) {

len/=1024f;

unit= "GB";

}

}

}return df.format(len) + "\n" + unit + "/s";

}/**

* 获取运营商

*

* @return*/

public staticString getProvider() {

String provider= "未知";try{

TelephonyManager telephonyManager=(TelephonyManager) ConfigManager

.getContext().getSystemService(Context.TELEPHONY_SERVICE);

String IMSI=telephonyManager.getSubscriberId();

Log.v("tag", "getProvider.IMSI:" +IMSI);if (IMSI == null) {if (TelephonyManager.SIM_STATE_READY ==telephonyManager

.getSimState()) {

Stringoperator =telephonyManager.getSimOperator();

Log.v("tag", "getProvider.operator:" + operator);if (operator != null) {if (operator.equals("46000")|| operator.equals("46002")|| operator.equals("46007")) {

provider= "中国移动";

}else if (operator.equals("46001")) {

provider= "中国联通";

}else if (operator.equals("46003")) {

provider= "中国电信";

}

}

}

}else{if (IMSI.startsWith("46000") || IMSI.startsWith("46002")|| IMSI.startsWith("46007")) {

provider= "中国移动";

}else if (IMSI.startsWith("46001")) {

provider= "中国联通";

}else if (IMSI.startsWith("46003")) {

provider= "中国电信";

}

}

}catch(Exception e) {

e.printStackTrace();

}returnprovider;

}/**

* 获取网络类型

*

* @return*/

public staticString getCurrentNetworkType() {int networkClass =getNetworkClass();

String type= "未知";switch(networkClass) {caseNETWORK_CLASS_UNAVAILABLE:

type= "无";break;caseNETWORK_CLASS_WIFI:

type= "Wi-Fi";break;caseNETWORK_CLASS_2_G:

type= "2G";break;caseNETWORK_CLASS_3_G:

type= "3G";break;caseNETWORK_CLASS_4_G:

type= "4G";break;caseNETWORK_CLASS_UNKNOWN:

type= "未知";break;

}returntype;

}private static int getNetworkClassByType(intnetworkType) {switch(networkType) {caseNETWORK_TYPE_UNAVAILABLE:returnNETWORK_CLASS_UNAVAILABLE;caseNETWORK_TYPE_WIFI:returnNETWORK_CLASS_WIFI;caseNETWORK_TYPE_GPRS:caseNETWORK_TYPE_EDGE:caseNETWORK_TYPE_CDMA:caseNETWORK_TYPE_1xRTT:caseNETWORK_TYPE_IDEN:returnNETWORK_CLASS_2_G;caseNETWORK_TYPE_UMTS:caseNETWORK_TYPE_EVDO_0:caseNETWORK_TYPE_EVDO_A:caseNETWORK_TYPE_HSDPA:caseNETWORK_TYPE_HSUPA:caseNETWORK_TYPE_HSPA:caseNETWORK_TYPE_EVDO_B:caseNETWORK_TYPE_EHRPD:caseNETWORK_TYPE_HSPAP:returnNETWORK_CLASS_3_G;caseNETWORK_TYPE_LTE:returnNETWORK_CLASS_4_G;default:returnNETWORK_CLASS_UNKNOWN;

}

}private static intgetNetworkClass() {int networkType =NETWORK_TYPE_UNKNOWN;try{

final NetworkInfo network=((ConnectivityManager) ConfigManager

.getContext()

.getSystemService(Context.CONNECTIVITY_SERVICE))

.getActiveNetworkInfo();if (network != null &&network.isAvailable()&&network.isConnected()) {int type =network.getType();if (type ==ConnectivityManager.TYPE_WIFI) {

networkType=NETWORK_TYPE_WIFI;

}else if (type ==ConnectivityManager.TYPE_MOBILE) {

TelephonyManager telephonyManager=(TelephonyManager) ConfigManager

.getContext().getSystemService(

Context.TELEPHONY_SERVICE);

networkType=telephonyManager.getNetworkType();

}

}else{

networkType=NETWORK_TYPE_UNAVAILABLE;

}

}catch(Exception ex) {

ex.printStackTrace();

}returngetNetworkClassByType(networkType);

}public staticString getWifiRssi() {int asu = 85;try{

final NetworkInfo network=((ConnectivityManager) ConfigManager

.getContext()

.getSystemService(Context.CONNECTIVITY_SERVICE))

.getActiveNetworkInfo();if (network != null &&network.isAvailable()&&network.isConnected()) {int type =network.getType();if (type ==ConnectivityManager.TYPE_WIFI) {

WifiManager wifiManager=(WifiManager) ConfigManager

.getContext()

.getSystemService(Context.WIFI_SERVICE);

WifiInfo wifiInfo=wifiManager.getConnectionInfo();if (wifiInfo != null) {

asu=wifiInfo.getRssi();

}

}

}

}catch(Exception e) {

e.printStackTrace();

}return asu + "dBm";

}public staticString getWifiSsid() {

String ssid= "";try{

final NetworkInfo network=((ConnectivityManager) ConfigManager

.getContext()

.getSystemService(Context.CONNECTIVITY_SERVICE))

.getActiveNetworkInfo();if (network != null &&network.isAvailable()&&network.isConnected()) {int type =network.getType();if (type ==ConnectivityManager.TYPE_WIFI) {

WifiManager wifiManager=(WifiManager) ConfigManager

.getContext()

.getSystemService(Context.WIFI_SERVICE);

WifiInfo wifiInfo=wifiManager.getConnectionInfo();if (wifiInfo != null) {

ssid=wifiInfo.getSSID();if (ssid == null) {

ssid= "";

}

ssid= ssid.replaceAll("\"", "");

}

}

}

}catch(Exception e) {

e.printStackTrace();

}returnssid;

}/**

* 检查sim卡状态

*

* @param ctx

* @return*/

public staticboolean checkSimState() {

TelephonyManager tm=(TelephonyManager) ConfigManager.getContext()

.getSystemService(Context.TELEPHONY_SERVICE);if (tm.getSimState() ==TelephonyManager.SIM_STATE_ABSENT|| tm.getSimState() ==TelephonyManager.SIM_STATE_UNKNOWN) {return false;

}return true;

}/**

* 获取imei*/

public staticString getImei() {

TelephonyManager mTelephonyMgr=(TelephonyManager) ConfigManager

.getContext().getSystemService(Context.TELEPHONY_SERVICE);

String imei=mTelephonyMgr.getDeviceId();if (imei == null) {

imei= "000000000000000";

}returnimei;

}public staticString getPhoneImsi() {

TelephonyManager mTelephonyMgr=(TelephonyManager) ConfigManager

.getContext().getSystemService(Context.TELEPHONY_SERVICE);returnmTelephonyMgr.getSubscriberId();

}public staticCellInfo getNetInfo() {

CellInfo info= newCellInfo();try{

TelephonyManager mTelephonyManager=(TelephonyManager) ConfigManager

.getContext().getSystemService(Context.TELEPHONY_SERVICE);

Stringoperator =mTelephonyManager.getNetworkOperator();if (operator != null) {/** 通过operator获取 MCC 和MNC*/

if (operator.length() > 3) {

String mcc= operator.substring(0, 3);

String mnc= operator.substring(3);

info.setMcc(mcc);

info.setMnc(mnc);

}

}int lac = 0;int cellId = 0;int phoneType =mTelephonyManager.getPhoneType();if (phoneType ==TelephonyManager.PHONE_TYPE_GSM) {

GsmCellLocation location=(GsmCellLocation) mTelephonyManager

.getCellLocation();/** 通过GsmCellLocation获取中国移动和联通 LAC 和cellID*/lac=location.getLac();

cellId=location.getCid();

}else if (phoneType ==TelephonyManager.PHONE_TYPE_CDMA) {

CdmaCellLocation location=(CdmaCellLocation) mTelephonyManager

.getCellLocation();

lac=location.getNetworkId();

cellId=location.getBaseStationId();

cellId/= 16;

}if (lac == 0 || cellId == 0) {

List infos =mTelephonyManager

.getNeighboringCellInfo();int lc = 0;int ci = 0;int rssi = 0;for(NeighboringCellInfo cell : infos) {//根据邻区总数进行循环

if (lc == 0 || ci == 0) {

lc=cell.getLac();

ci=cell.getCid();

rssi=cell.getRssi();

}//sb.append(" LAC : " + info.getLac());// //取出当前邻区的LAC//sb.append(" CID : " + info.getCid());// //取出当前邻区的CID//sb.append(" BSSS : " + (-113 + 2 * info.getRssi()) +//"\n");//获取邻区基站信号强度

}

rssi= -113 + 2 *rssi;

}

}catch(Exception e) {

e.printStackTrace();

}returninfo;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值