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 ...
随机推荐
- 深入掌握JMS--转
深入掌握JMS(一):JSM基础 1. JMS基本概念 JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口简化企业应用的开发.它支持 ...
- #IOS-navigation中左滑pop的三种方法
IOS-navigation中左滑pop的三种方法 系统自带pop方法 如果我们没有对navigation中的back按钮进行自定义,我们可以直接使用系统自带的左滑pop方法.但是如果我们对back按 ...
- 修改android应用包名 分类: android 学习笔记 2015-07-16 22:48 4人阅读 评论(0) 收藏
由于项目需要,要修改已经开发好的应用包名,这本身很简单,但是如果你没找到门道,可能会白白浪费许多时间. 修改包名有三个地方要改,这三个地方的修改一定要按顺序来,否则你可能会遇到许多不必要的麻烦. 1. ...
- 10.8 noip模拟试题
1.花 (flower.cpp/c/pas) [问题描述] 商店里出售n种不同品种的花.为了装饰桌面,你打算买m支花回家.你觉得放两支一样的花很难看,因此每种品种的花最多买1支.求总共有几种不同的 ...
- js分家效应
(原创文章,转载请注明出处) 有继承,那么就有分家.让我们看以下例子. var parents = function(){ } parents.prototype.money = 200; var c ...
- My-sql #1045 - Access denied for user 'root'@'localhost' (using password: NO)
当你重装数据库后出现这个问题的时候,不要着急,首先你要去你的确定你的数据库已经成功的把服务开启了, 然后确定你的密码和账户,IP都确认的情况下, 去寻找config.inc.php 这个文件,根据配置 ...
- WPF Paragraph获取或修改文本内容
一.说明 Paragraph继承自Block,Block继承自TextElement,在TextElement中 // // 摘要: // 获取表示元素中内容末尾的 System.Windows.Do ...
- opencar二次开发常用代码
<?php //创建Registry对象 //注册所有公共类 //创建Front类对象,作为请求分发器(Dispatcher) //根据用户请求(url)创建控制器对象及其动作. // 在Fro ...
- 对UIImage进行的一些操作
1.生成指定宽高的UIImage对象(oldImage为原始图片对象,newImage为操作后的图片对象) // 参数1:图片的尺寸 参数2:是否透明(没看出YES和NO有什么区别) 参数3:缩放(1 ...
- NSArray 跟 NSMutableArray 使用 区别
NSArray 可变数组 一.NSArray是静态数组,创建后数组内容及长度不能再修改. 实例: //用arrayWithObjects初始化一个不可变的数组对象. //初始化的值之间使用逗号分开,以 ...