Android NetWorkUtil
package com.android.hcframe.netdisc.util; import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.util.List; import android.content.ComponentName;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.support.v4.content.ContextCompat;
import android.telephony.CellInfo;
import android.telephony.NeighboringCellInfo;
import android.telephony.TelephonyManager;
import android.telephony.cdma.CdmaCellLocation;
import android.telephony.gsm.GsmCellLocation;
import android.util.Log; public class NetWorkUtil { public static boolean isWifiAvailable(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected() && networkInfo
.getType() == ConnectivityManager.TYPE_WIFI);
} /**
* 获取MAC地址
*
* @param context
* @return
*/
public static String getMacAddress(Context context) {
if (context == null) {
return "";
} String localMac = null;
if (isWifiAvailable(context)) {
localMac = getWifiMacAddress(context);
} if (localMac != null && localMac.length() > ) {
localMac = localMac.replace(":", "-").toLowerCase();
return localMac;
} localMac = getMacFromCallCmd();
if (localMac != null) {
localMac = localMac.replace(":", "-").toLowerCase();
} return localMac;
} private static String 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();
return localMac;
}
} } catch (Exception e) {
e.printStackTrace();
} return null;
} /**
* 通过callCmd("busybox ifconfig","HWaddr")获取mac地址
*
* @attention 需要设备装有busybox工具
* @return Mac Address
*/
private static String getMacFromCallCmd() {
String result = "";
result = callCmd("busybox ifconfig", "HWaddr"); if (result == null || result.length() <= ) {
return null;
} Log.v("tag", "cmd result : " + result); // 对该行数据进行解析
// 例如:eth0 Link encap:Ethernet HWaddr 00:16:E8:3E:DF:67
if (result.length() > && result.contains("HWaddr") == true) {
String Mac = result.substring(result.indexOf("HWaddr") + ,
result.length() - );
if (Mac.length() > ) {
result = Mac.replaceAll(" ", "");
}
} return result;
} public static String callCmd(String cmd, String filter) {
String result = "";
String line = "";
try {
Process proc = Runtime.getRuntime().exec(cmd);
InputStreamReader is = new InputStreamReader(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();
}
return result;
} /**
* 网络是否可用
*
* @param context
* @return
*/
public static boolean 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 = -;
// private static final int NETWORK_TYPE_MOBILE = -100;
private static final int NETWORK_TYPE_WIFI = -; private static final int NETWORK_CLASS_WIFI = -;
private static final int NETWORK_CLASS_UNAVAILABLE = -;
/** Unknown network class. */
private static final int NETWORK_CLASS_UNKNOWN = ;
/** Class of broadly defined "2G" networks. */
private static final int NETWORK_CLASS_2_G = ;
/** Class of broadly defined "3G" networks. */
private static final int NETWORK_CLASS_3_G = ;
/** Class of broadly defined "4G" networks. */
private static final int NETWORK_CLASS_4_G = ; private static DecimalFormat df = new DecimalFormat("#.##"); // 适配低版本手机
/** Network type is unknown */
public static final int NETWORK_TYPE_UNKNOWN = ;
/** Current network is GPRS */
public static final int NETWORK_TYPE_GPRS = ;
/** Current network is EDGE */
public static final int NETWORK_TYPE_EDGE = ;
/** Current network is UMTS */
public static final int NETWORK_TYPE_UMTS = ;
/** Current network is CDMA: Either IS95A or IS95B */
public static final int NETWORK_TYPE_CDMA = ;
/** Current network is EVDO revision 0 */
public static final int NETWORK_TYPE_EVDO_0 = ;
/** Current network is EVDO revision A */
public static final int NETWORK_TYPE_EVDO_A = ;
/** Current network is 1xRTT */
public static final int NETWORK_TYPE_1xRTT = ;
/** Current network is HSDPA */
public static final int NETWORK_TYPE_HSDPA = ;
/** Current network is HSUPA */
public static final int NETWORK_TYPE_HSUPA = ;
/** Current network is HSPA */
public static final int NETWORK_TYPE_HSPA = ;
/** Current network is iDen */
public static final int NETWORK_TYPE_IDEN = ;
/** Current network is EVDO revision B */
public static final int NETWORK_TYPE_EVDO_B = ;
/** Current network is LTE */
public static final int NETWORK_TYPE_LTE = ;
/** Current network is eHRPD */
public static final int NETWORK_TYPE_EHRPD = ;
/** Current network is HSPA+ */
public static final int NETWORK_TYPE_HSPAP = ; /**
* 格式化大小
*
* @param size
* @return
*/
public static String formatSize(long size) {
String unit = "B";
float len = size;
if (len > ) {
len /= 1024f;
unit = "KB";
}
if (len > ) {
len /= 1024f;
unit = "MB";
}
if (len > ) {
len /= 1024f;
unit = "GB";
}
if (len > ) {
len /= 1024f;
unit = "TB";
}
return df.format(len) + unit;
} public static String formatSizeBySecond(long size) {
String unit = "B";
float len = size;
if (len > ) {
len /= 1024f;
unit = "KB";
}
if (len > ) {
len /= 1024f;
unit = "MB";
}
if (len > ) {
len /= 1024f;
unit = "GB";
}
if (len > ) {
len /= 1024f;
unit = "TB";
}
return df.format(len) + unit + "/s";
} public static String format(long size) {
String unit = "B";
float len = size;
if (len > ) {
len /= 1024f;
unit = "KB";
if (len > ) {
len /= 1024f;
unit = "MB";
if (len > ) {
len /= 1024f;
unit = "GB";
}
}
}
return df.format(len) + "\n" + unit + "/s";
} /**
* 获取运营商
*
* @return
*/
public static String getProvider(Context context) {
String provider = "未知";
try {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String IMSI = telephonyManager.getSubscriberId();
Log.v("tag", "getProvider.IMSI:" + IMSI);
if (IMSI == null) {
if (TelephonyManager.SIM_STATE_READY == telephonyManager
.getSimState()) {
String operator = telephonyManager.getSimOperator();
Log.v("tag", "getProvider.operator:" + operator);
if (operator != null) {
if (operator.equals("")
|| operator.equals("")
|| operator.equals("")) {
provider = "中国移动";
} else if (operator.equals("")) {
provider = "中国联通";
} else if (operator.equals("")) {
provider = "中国电信";
}
}
}
} else {
if (IMSI.startsWith("") || IMSI.startsWith("")
|| IMSI.startsWith("")) {
provider = "中国移动";
} else if (IMSI.startsWith("")) {
provider = "中国联通";
} else if (IMSI.startsWith("")) {
provider = "中国电信";
}
}
} catch (Exception e) {
e.printStackTrace();
}
return provider;
} /**
* 获取网络类型
*
* @return
*/
public static String getCurrentNetworkType(Context context) {
int networkClass = getNetworkClass(context);
String type = "未知";
switch (networkClass) {
case NETWORK_CLASS_UNAVAILABLE:
type = "无";
break;
case NETWORK_CLASS_WIFI:
type = "Wi-Fi";
break;
case NETWORK_CLASS_2_G:
type = "2G";
break;
case NETWORK_CLASS_3_G:
type = "3G";
break;
case NETWORK_CLASS_4_G:
type = "4G";
break;
case NETWORK_CLASS_UNKNOWN:
type = "未知";
break;
}
return type;
} private static int getNetworkClassByType(int networkType) {
switch (networkType) {
case NETWORK_TYPE_UNAVAILABLE:
return NETWORK_CLASS_UNAVAILABLE;
case NETWORK_TYPE_WIFI:
return NETWORK_CLASS_WIFI;
case NETWORK_TYPE_GPRS:
case NETWORK_TYPE_EDGE:
case NETWORK_TYPE_CDMA:
case NETWORK_TYPE_1xRTT:
case NETWORK_TYPE_IDEN:
return NETWORK_CLASS_2_G;
case NETWORK_TYPE_UMTS:
case NETWORK_TYPE_EVDO_0:
case NETWORK_TYPE_EVDO_A:
case NETWORK_TYPE_HSDPA:
case NETWORK_TYPE_HSUPA:
case NETWORK_TYPE_HSPA:
case NETWORK_TYPE_EVDO_B:
case NETWORK_TYPE_EHRPD:
case NETWORK_TYPE_HSPAP:
return NETWORK_CLASS_3_G;
case NETWORK_TYPE_LTE:
return NETWORK_CLASS_4_G;
default:
return NETWORK_CLASS_UNKNOWN;
}
} private static int getNetworkClass(Context context) {
int networkType = NETWORK_TYPE_UNKNOWN;
try {
final NetworkInfo network = ((ConnectivityManager) context
.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) context.getSystemService(
Context.TELEPHONY_SERVICE);
networkType = telephonyManager.getNetworkType();
}
} else {
networkType = NETWORK_TYPE_UNAVAILABLE;
} } catch (Exception ex) {
ex.printStackTrace();
}
return getNetworkClassByType(networkType); } public static String getWifiRssi(Context context) {
int asu = ;
try {
final NetworkInfo network = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
if (network != null && network.isAvailable()
&& network.isConnected()) {
int type = network.getType();
if (type == ConnectivityManager.TYPE_WIFI) {
WifiManager wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (wifiInfo != null) {
asu = wifiInfo.getRssi();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return asu + "dBm";
} public static String getWifiSsid(Context context) {
String ssid = "";
try {
final NetworkInfo network = ((ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
if (network != null && network.isAvailable()
&& network.isConnected()) {
int type = network.getType();
if (type == ConnectivityManager.TYPE_WIFI) {
WifiManager wifiManager = (WifiManager)context
.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();
}
return ssid;
} /**
* 检查sim卡状态
*
* @param
* @return
*/
public static boolean checkSimState(Context context) {
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
if (tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT
|| tm.getSimState() == TelephonyManager.SIM_STATE_UNKNOWN) {
return false;
} return true;
} /**
* 获取imei
*/
public static String getImei(Context context) {
TelephonyManager mTelephonyMgr = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String imei = mTelephonyMgr.getDeviceId();
if (imei == null) {
imei = "";
}
return imei;
} public static String getPhoneImsi(Context context) {
TelephonyManager mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return mTelephonyMgr.getSubscriberId();
} // public static CellInfo getNetInfo(Context context) {
// CellInfo info = new CellInfo();
// try {
// TelephonyManager mTelephonyManager = (TelephonyManager) context
// .getSystemService(Context.TELEPHONY_SERVICE);
// String operator = 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<NeighboringCellInfo> 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();
// }
// return info;
// } }
Android NetWorkUtil的更多相关文章
- Android okHttp网络请求之缓存控制Cache-Control
前言: 前面的学习基本上已经可以完成开发需求了,但是在项目中有时会遇到对请求做个缓存,当没网络的时候优先加载本地缓存,基于这个需求我们来学习一直okHttp的Cache-Control. okHttp ...
- Android判断网路是否畅通加权限
权限 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission ...
- Android PullToRefresh (GridView 下拉刷新上拉加载)
做这个需要自己去git hub上下载个pull-to-refresh 里面有个library为依赖包自己导到自己的项目中 (下载地址:https://github.com/chrisbanes/And ...
- Android 判断用户2G/3G/4G移动数据网络
Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,也可以 ...
- android应用版本更新功能---完整版
源码下载地址:csdn下载地址:http://download.csdn.net/download/csdn576038874/9526085 博客园下载地址:http://files.cnblogs ...
- Android 开发工具类 19_NetworkStateReceiver
检测网络状态改变类: 1.注册网络状态广播: 2.检查网络状态: 3.注销网络状态广播: 4.获取当前网络状态,true为网络连接成功,否则网络连接失败: 5.注册网络连接观察者: 6.注销网络连接观 ...
- Android 开发工具类 18_NetWorkUtil
检测网络的一个工具包: 1.网络是否可用: 2.判断是否有网络连接: 3.判断 WIFI 网络是否可用: 4.判断 MOBILE 网络是否可用; 5.获取当前网络连接的类型信息: 6.获取当前的网络状 ...
- android 一些常用的功能方法代码块
我们这些苦逼的程序员在工作中,每一个老板都希望我们都能把手头的工作做好的,而且是越快越好,那我们要怎么样才能快起来呢?对于开发中常用的代码块无限复做是我们工作中简省时间最有效的途径之一,而下面的这些代 ...
- [置顶] android socket 聊天实现与调试
网上很多基于Socket的聊天实现都是不完整的... 结合自己的经验给大家分享一下,完整代码可以在GitHub里获取https://github.com/zz7zz7zz/android-socket ...
随机推荐
- [转] Express 4 中的变化
http://www.cnblogs.com/haogj/p/3985438.html 概览 从 Express 3 到Express 4 是一个巨大的变化,这意味着现存的 Express 3 应用在 ...
- 根据引用jar包路径查找原JAR包
网站:http://www.findjar.com/. 就是这个网站,经常在网上看到一些好的源码,什么都说了,就是没有说明需要引入那个包,这个包需要从什么地方下载,有些时候在网上搜索还不一定搜索得到, ...
- 9.29noip模拟试题
环上的游戏(cycle) 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这 ...
- 9.26 noip模拟试题
魔术球问题弱化版(ball.c/.cpp/.pas) 题目描述 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2,3,…的球. (1)每次只能在某根柱子的最上面放球. (2) ...
- window.showModalDialog 子窗口和父窗口不兼容最新的谷歌
最新版的谷歌不支持window.showModalDialog的写法,会出现,找不到方法的问题,同时返回值的方法window.dialogArguments;也用不了. 这里就只能用最原版的windo ...
- Java实现ajax
jsp端的代码,sucess:function(){} 里面就是返回的处理 function ChangeTime(){ alert("www"); var startYmd = ...
- maclean-【性能调优】Oracle AWR报告指标全解析 学习笔记
原文链接:http://www.askmaclean.com/archives/performance-tuning-oracle-awr.html AWR小技巧 手动执行一个快照: Exec dbm ...
- 【转】WF4.0 (基础篇)
转自:http://www.cnblogs.com/foundation/category/215023.html 作者:WXWinter —— 兰竹菊梅★春夏秋冬☆ —— wxwinter@16 ...
- 【NOI2004】郁闷的出纳员
[问题描述] OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的 ...
- JqGrid自定义toolbar
1.设置toolbar参数为[true,"top"],其意思是toolbar显示在Grid顶部,且其id为t_+Grid的id.e.g.: Grid的id为myGrid,toolb ...