package com.eighteengray.commonutillibrary;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import java.util.ArrayList;
import java.util.List;
/**
* 网络相关工具类
*/
public class NetUtils
{
Context context;
ConnectivityManager connectivityManager;
WifiManager wifiManager;
WifiManager.WifiLock wifiLock;
// 定义WifiInfo对象
private WifiInfo wifiInfo;
// 扫描出的网络连接列表
private List<ScanResult> mWifiList = new ArrayList<>();
// 网络连接列表
private List<WifiConfiguration> mWifiConfiguration = new ArrayList<>();
public NetUtils(Context c)
{
this.context = c;
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}
private void getWifiLock(Context context)
{
wifiLock = wifiManager.createWifiLock("wifi");
}
private void getWifiInfo(Context context)
{
wifiInfo = wifiManager.getConnectionInfo();
}
/**
* 打开网络设置界面
*/
public void openSetting(Activity activity)
{
Intent intent = new Intent("/");
ComponentName cm = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");
intent.setComponent(cm);
intent.setAction("android.intent.action.VIEW");
activity.startActivityForResult(intent, 0);
}
/**
* 扫描所有可用网络
* @param context
*/
public void startScan(Context context)
{
wifiManager.startScan();
// 得到扫描结果
mWifiList = wifiManager.getScanResults();
// 得到配置好的网络连接
mWifiConfiguration = wifiManager.getConfiguredNetworks();
}
/**
* 判断网络是否连接
* @param context
* @return
*/
public boolean isConnected(Context context)
{
if (connectivityManager != null)
{
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (null != info && info.isConnected())
{
if (info.getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
}
return false;
}
/**
* 判断是否是wifi连接
* @param context
* @return
*/
public boolean isWifi(Context context)
{
if (connectivityManager == null)
{
return false;
}
return connectivityManager.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
}
/**
* 检查当前WIFI状态
* @param context
* @return
*/
public int checkState(Context context)
{
return wifiManager.getWifiState();
}
/**
* 打开WIFI
*/
public void openWifi(Context context)
{
if (!wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(true);
}
}
/**
* 关闭WIFI
* @param context
*/
public void closeWifi(Context context)
{
if (wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(false);
}
}
/**
* 锁定WifiLock
* @param context
*/
public void acquireWifiLock(Context context)
{
getWifiLock(context);
wifiLock.acquire();
}
/**
* 解锁WifiLock
* @param context
*/
public void releaseWifiLock(Context context)
{
getWifiLock(context);
if (wifiLock.isHeld())
{
wifiLock.acquire();
}
}
/**
* 按照指定配置进行连接
* @param index
* @param context
*/
public void connectConfiguration(int index, Context context)
{
// 索引大于配置好的网络索引返回
if (index > mWifiConfiguration.size())
{
return;
}
// 连接配置好的指定ID的网络
wifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, true);
}
/**
* 添加一个网络并连接
* @param wcg
* @param context
*/
public boolean addNetwork(WifiConfiguration wcg, Context context)
{
int wcgID = wifiManager.addNetwork(wcg);
boolean b = wifiManager.enableNetwork(wcgID, true);
return b;
}
/**
* 断开指定ID的网络
* @param netId
* @param context
*/
public void disconnectWifi(int netId, Context context)
{
wifiManager.disableNetwork(netId);
wifiManager.disconnect();
}
/**
* 得到MAC地址
* @param context
* @return
*/
public String getMacAddress(Context context)
{
getWifiInfo(context);
return (wifiInfo == null) ? "NULL" : wifiInfo.getMacAddress();
}
/**
* 得到接入点的BSSID
* @param context
* @return
*/
public String getBSSID(Context context)
{
getWifiInfo(context);
return (wifiInfo == null) ? "NULL" : wifiInfo.getBSSID();
}
/**
* 得到IP地址
* @param context
* @return
*/
public int getIPAddress(Context context)
{
getWifiInfo(context);
return (wifiInfo == null) ? 0 : wifiInfo.getIpAddress();
}
/**
* 得到连接的ID
* @param context
* @return
*/
public int getNetworkId(Context context)
{
getWifiInfo(context);
return (wifiInfo == null) ? 0 : wifiInfo.getNetworkId();
}
}