package com.zzx.factorytest.manager; import java.util.ArrayList; import java.util.Arrays; import java.util.List; 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 com.zzx.factorytest.bean.WifiStrength; /** * * @{# WifiChangeManager.java Create on 2012-11-28 上午10:13:33 * * 类功能说明:Wifi操作管理类 * @Version 1.0 * @Author 李伟豪 * * */ public class WifiStatusManager { private Context mContext; private WifiManager mWifiManager; private WifiInfo mWifiInfo; private List<ScanResult> mWifiList;// 扫描出的网络连接列表 private List<WifiConfiguration> mWifiConfiguration;// 网络连接列表 private WifiLock mWifiLock = null;// wifi锁 private static final String LOCKNAME = "hsj_wifi"; private final static ArrayList<Integer> channelsFrequency = new ArrayList<Integer>( Arrays.asList(0, 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2484)); // 定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况 public enum WifiCipherType { WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID } public WifiStatusManager(Context mContext) { this.mContext = mContext; this.mWifiManager = (WifiManager) mContext .getSystemService(Context.WIFI_SERVICE); this.mWifiInfo = mWifiManager.getConnectionInfo(); } public boolean isWifiEnabled() { return mWifiManager.isWifiEnabled(); } /** * * 方法描述:打开wifi */ public void openWifi() { if (!mWifiManager.isWifiEnabled()) { mWifiManager.setWifiEnabled(true); } } /** * * 方法描述:关闭wifi */ public void closeWifi() { if (mWifiManager.isWifiEnabled()) { mWifiManager.setWifiEnabled(false); } } /** * * 方法描述:锁定wifi */ public void lockWifi() { mWifiLock.acquire(); } /** * * 方法描述:解锁wifi */ public void rlockWifi() { if (mWifiLock.isHeld()) { mWifiLock.acquire(); } } /** * * 方法描述:创建一个wifilock */ public void createWifiLock() { mWifiLock = mWifiManager.createWifiLock(LOCKNAME); } /** * * 方法描述:扫描wifi */ public void startScan() { mWifiManager.startScan(); // 得到扫描结果 mWifiList = mWifiManager.getScanResults(); // 得到配置好的网络连接 mWifiConfiguration = mWifiManager.getConfiguredNetworks(); } /** * * 方法描述:得到网络列表 * * @return */ public List<ScanResult> getWifiList() { return mWifiList; } /** * * 方法描述:查看扫描结果 * * @return */ public StringBuilder lookUpScan() { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < mWifiList.size(); i++) { stringBuilder .append("Index_" + new Integer(i + 1).toString() + ":"); // 将ScanResult信息转换成一个字符串包 // 其中把包括:BSSID、SSID、capabilities、frequency、level stringBuilder.append((mWifiList.get(i)).toString()); stringBuilder.append("\n"); } return stringBuilder; } /** * * 方法描述: 得到MAC地址 * * @return */ public String getMacAddress() { return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress(); } /** * * 方法描述:得到接入点的BSSID * * @return */ public String getBSSID() { return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID(); } /** * * 方法描述:得到IP地址 * * @return */ public int getIPAddress() { return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress(); } /** * * 方法描述:得到WifiInfo的所有信息包 * * @return */ public String getWifiInfo() { return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString(); } /** * Wifi的连接速度及信号强度: */ public List<WifiStrength> getWifiInfoStrength() { WifiInfo wifiInfo = mWifiManager.getConnectionInfo();// 当前wifi连接信息 List<WifiStrength> list = new ArrayList<WifiStrength>(); WifiStrength wifiStrength = new WifiStrength(); // if (wifiInfo.getBSSID() != null) { List<ScanResult> scanResults = mWifiManager.getScanResults();// 搜索到的设备列表 if (scanResults != null) { for (ScanResult scanResult : scanResults) { wifiStrength = new WifiStrength(); wifiStrength.label = scanResult.SSID; wifiStrength.strength = scanResult.level; wifiStrength.channel =getChannelFromFrequency(scanResult.frequency);//mWifiManager.calculateSignalLevel(scanResult.level, 5); list.add(wifiStrength); } } return list; } public static int getChannelFromFrequency(int frequency) { return channelsFrequency.indexOf(Integer.valueOf(frequency)); } }