content: package com.jingewenku.abrahamcaijin.commonutil;
  
  import android.content.Context;
  import android.net.wifi.ScanResult;
  import android.net.wifi.WifiConfiguration;
  import android.net.wifi.WifiInfo;
  import android.net.wifi.WifiManager;
  import android.net.wifi.WifiManager.WifiLock;
  
  import java.util.List;
  
  /**
   * 主要功能:Wifi管理工具类
   *
   * @Prject: CommonUtilLibrary
   * @Package: com.jingewenku.abrahamcaijin.commonutil
   * @author: AbrahamCaiJin
   * @date: 2017年05月03日 16:20
   * @Copyright: 个人版权所有
   * @Company:
   * @version: 1.0.0
   */
  
  public class AppWifiHelperMgr {
      private WifiManager wifiManager;// 声明Wifi管理对象
      private WifiInfo wifiInfo;// Wifi信息
      private List<ScanResult> scanResultList; // 扫描出来的网络连接列表
      private List<WifiConfiguration> wifiConfigList;// 网络配置列表
      private WifiLock wifiLock;// Wifi锁
  
      /**
       * 构造函数
       * @param context
       */
      public AppWifiHelperMgr(Context context){
          this.wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);// 获取Wifi服务
          // 得到Wifi信息
          this.wifiInfo = wifiManager.getConnectionInfo();// 得到连接信息
      }
  
      /**
       * Wifi状态.
       * @return
       */
      public boolean isWifiEnabled(){
          return wifiManager.isWifiEnabled();
      }
  
      /**
       * 打开 wifi
       * @return
       */
      public boolean openWifi(){
          if (!isWifiEnabled()) {
              return wifiManager.setWifiEnabled(true);
          } else {
              return false;
          }
      }
  
      /**
       * 关闭Wifi
       * @return
       */
      public boolean closeWifi(){
          if (!isWifiEnabled()) {
              return true;
          } else {
              return wifiManager.setWifiEnabled(false);
          }
      }
  
      /**
       *  锁定wifi
       *  锁定WiFI就是判断wifi是否建立成功，在这里使用的是held(握手) acquire
       */
      public void lockWifi() {
          wifiLock.acquire();
      }
  
  
      /**
       * 解锁wifi
       */
      public void unLockWifi() {
          if (!wifiLock.isHeld()) {
              wifiLock.release(); // 释放资源
          }
      }
  
      /**
       * 创建一个Wifi锁，需要时调用
       */
      public void createWifiLock() {
          wifiLock = wifiManager.createWifiLock("flyfly"); // 创建一个锁的标志
      }
  
      /**
       * 扫描网络
       */
      public void startScan() {
          wifiManager.startScan();
          scanResultList = wifiManager.getScanResults(); // 扫描返回结果列表
          wifiConfigList = wifiManager.getConfiguredNetworks(); // 扫描配置列表
      }
  
      public List<ScanResult> getWifiList() {
          return scanResultList;
      }
  
      public List<WifiConfiguration> getWifiConfigList() {
          return wifiConfigList;
      }
  
      /**
       * 获取扫描WIFI列表的信息
       * @return
       */
      public String lookupScanInfo() {
          StringBuilder scanBuilder = new StringBuilder();
          if(scanResultList == null){
              return "";
          }
          for (int i = 0; i < scanResultList.size(); i++) {
              ScanResult sResult = scanResultList.get(i);
              scanBuilder.append("编号：" + (i + 1));
              scanBuilder.append(" ");
              scanBuilder.append(sResult.toString());  //所有信息
              scanBuilder.append("\n");
          }
          scanBuilder.append("--------------华丽分割线--------------------");
          for(int i=0;i<wifiConfigList.size();i++){
              scanBuilder.append(wifiConfigList.get(i).toString());
              scanBuilder.append("\n");
          }
          return scanBuilder.toString();
      }
  
      /**
       * 获取指定Wifi的ssid名称
       * @param NetId
       * @return
       */
      public String getSSID(int NetId){
          return scanResultList.get(NetId).SSID;
      }
  
      /**
       * 获取指定Wifi的物理地址
       * @param NetId
       * @return
       */
      public String getBSSID(int NetId){
          return scanResultList.get(NetId).BSSID;
      }
  
      /**
       * 获取指定Wifi的频率
       * @param NetId
       * @return
       */
      public int getFrequency(int NetId){
          return scanResultList.get(NetId).frequency;
      }
  
      /**
       * 获取指定Wifi的功能
       * @param NetId
       * @return
       */
      public String getCapabilities(int NetId){
          return scanResultList.get(NetId).capabilities;
      }
      /**
       * 获取指定Wifi的信号强度
       * @param NetId
       * @return
       */
      public int getLevel(int NetId){
          return scanResultList.get(NetId).level;
      }
  
  
  
  
  
      /**
       * 获取本机Mac地址
       * @return
       */
      public String getMac() {
          return (wifiInfo == null) ? "" : wifiInfo.getMacAddress();
      }
  
      public String getBSSID() {
          return (wifiInfo == null) ? null : wifiInfo.getBSSID();
      }
  
      public String getSSID() {
          return (wifiInfo == null) ? null : wifiInfo.getSSID();
      }
  
      /**
       * 返回当前连接的网络的ID
       * @return
       */
      public int getCurrentNetId() {
          return (wifiInfo == null) ? null : wifiInfo.getNetworkId();
      }
  
      /**
       * 返回所有信息
       * @return
       */
      public String getWifiInfo() {
          return (wifiInfo == null) ? null : wifiInfo.toString();
      }
  
      /**
       * 获取IP地址
       * @return
       */
      public int getIP() {
          return (wifiInfo == null) ? null : wifiInfo.getIpAddress();
      }
  
      /**
       * 添加一个连接
       * @param config
       * @return
       */
      public boolean addNetWordLink(WifiConfiguration config) {
          int NetId = wifiManager.addNetwork(config);
          return wifiManager.enableNetwork(NetId, true);
      }
  
      /**
       * 禁用一个链接
       * @param NetId
       * @return
       */
      public boolean disableNetWordLink(int NetId) {
          wifiManager.disableNetwork(NetId);
          return wifiManager.disconnect();
      }
  
      /**移除一个链接
       *
       * @param NetId
       * @return
       */
      public boolean removeNetworkLink(int NetId) {
          return wifiManager.removeNetwork(NetId);
      }
  
      /**
       * 不显示SSID
       * @param NetId
       */
      public void hiddenSSID(int NetId){
          wifiConfigList.get(NetId).hiddenSSID=true;
      }
  
      /**
       * 显示SSID
       * @param NetId
       */
      public void displaySSID(int NetId){
          wifiConfigList.get(NetId).hiddenSSID=false;
      }
  }
  