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 ...
随机推荐
- (转载)Java 1.7的新特性
网上找了一下,整理了贴出来. 下面是Java 1.7 里新出现的功能的一些用法例子: 对集合的支持 摒弃了 Java 集合接口的实现类,如: ArrayList . HashSet 和 HashMap ...
- 蓝牙代理报错:invalid handle error
错误症状: -(void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCh ...
- codevs1024一塔湖图(丧心病狂的建图)
/* 丧心病狂的最短路 关键是建图 根据题目中给的路 拆出节点来 建图 (i,j) -->(j-1)*n+i 然后根据障碍 把死路 湖覆盖的dis改变成极大值 然后Floyd 然后 然后就没有然 ...
- ASP.NET html转图片
using System.IO; using System.Drawing; using System.Threading; using System.Windows.Forms; public cl ...
- laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的问题
遇到的问题: laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的问题(safari下也有同样问题); 解决办法: 给laydate绑定id; 解决前代码: <input ...
- <input value="hidden">的作用
这样子上个页面的参数可以保存在这个页面,为下个页面获取参数做准备,在这个页面表单提交的时候下个页面可以获取参数
- 监听polygon变化
Polygons are made of Paths which are just MVCArrays (in this case, they're a list of LatLng objects) ...
- SQL SERVER字符集的研究(中英文字符集,varchar,nvarchar).
一. 试验归类测试SQL: drop table a )) insert into a values('a') insert into a values(N'a') insert into a val ...
- Array,ArrayList 和 List<T>的选择和性能比较.
Array Class Provides methods for creating, manipulating, searching, and sorting arrays, thereby serv ...
- powerdesigner设置唯一键,但不是主键的方式
[转载]http://blog.csdn.net/cnham/article/details/6676650 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的 ...