首页 > 代码库 > 操作Wifi的工具类
操作Wifi的工具类
有时候需要打开关闭wifi,或者是坚持状态什么的,这里我写了个工具类来完成各种操作,今后还会添加其他的功能。比如链接某个加密/不加密的wifi
WifiAdmin.java
package com.kale.socketactivity;import java.util.ArrayList;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 android.util.Log;public class WifiAdmin { private final static String TAG = "WifiAdmin"; public static final int IS_OPENING = 1,IS_CLOSING = 2,IS_OPENED = 3,IS_CLOSED = 4; private StringBuffer mStringBuffer = new StringBuffer(); private List<ScanResult> listResult; private ScanResult mScanResult; // 定义WifiManager对象 private WifiManager mWifiManager; // 定义WifiInfo对象 private WifiInfo mWifiInfo; // 网络连接列表 private List<WifiConfiguration> mWifiConfigList; // 定义一个WifiLock WifiLock mWifiLock; /** * 构造方法 */ public WifiAdmin(Context context) { mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mWifiInfo = mWifiManager.getConnectionInfo(); mWifiConfigList = mWifiManager.getConfiguredNetworks(); } /** * 打开Wifi网卡,能打开就返回true,无法打开返回false */ public boolean openNetCard() { if (!mWifiManager.isWifiEnabled()) { return mWifiManager.setWifiEnabled(true); } else{ return false; } } /** * 关闭Wifi网卡,能关闭返回true,不能关就返回false */ public boolean closeNetCard() { if (mWifiManager.isWifiEnabled()) { return mWifiManager.setWifiEnabled(false); } else{ return false; } } /** * 检查当前Wifi网卡状态,返回四种状态,如果出错返回-1 */ public int getWifitate() { int result = -1; switch (mWifiManager.getWifiState()) { case 0: Log.i(TAG, "网卡正在关闭"); result = IS_CLOSING; break; case 1: Log.i(TAG, "网卡已经关闭"); result = IS_CLOSED; break; case 2: Log.i(TAG, "网卡正在打开"); result = IS_OPENING; break; case 3: Log.i(TAG, "网卡已经打开"); result = IS_OPENED; break; default: Log.i(TAG, "---_---晕......没有获取到状态---_---"); result = -1; break; } return result; } /** * 扫描周边网络,判断周边是否有wifi,有就返回true,没有就返回false */ public boolean scan() { if (getWifitate() == IS_OPENED) { //开始扫描 mWifiManager.startScan(); //将扫描结果存入数据列中 listResult = mWifiManager.getScanResults(); if (listResult != null) { Log.i(TAG, "有wifi"); return true; } else { Log.i(TAG, "当前区域没有无线网络"); return false; } } else { return false; } } /** * 得到附近wifi的扫描结果,是ScanResult对象 * 得到的是附近网络的结果集,没有就返回null */ public ArrayList<ScanResult> getScanResult() { // 每次点击扫描之前清空上一次的扫描结果 if (mStringBuffer != null) { mStringBuffer = new StringBuffer(); } // 开始扫描网络 scan(); listResult = mWifiManager.getScanResults(); ArrayList<ScanResult> scanResultsList = new ArrayList<ScanResult>(); if (listResult != null) { for (int i = 0; i < listResult.size(); i++) { mScanResult = listResult.get(i); scanResultsList.add(mScanResult); /*mStringBuffer = mStringBuffer.append("NO.").append(i) .append(" :") .append(mScanResult.SSID).append("->") .append(mScanResult.BSSID).append("->") .append(mScanResult.capabilities).append("->") .append(mScanResult.frequency).append("->") .append(mScanResult.level).append("->") .append(mScanResult.describeContents()).append("\n\n");*/ } //Log.i(TAG, mStringBuffer.toString()); return scanResultsList; } else { return null; } } /** * 得到指定网络的index(从0开始计数),找不到就返回-1 */ public int getUniqueId(String netName){ // 开始扫描网络 scan(); listResult = mWifiManager.getScanResults(); if (listResult != null) { for (int i = 0; i < listResult.size(); i++) { mScanResult = listResult.get(i); if(mScanResult.SSID.equals(netName)){ return i; } String show = "No = "+i + " SSID = "+mScanResult.SSID + " capabilities = "+mScanResult.capabilities + " level = "+mScanResult.level; Log.i(TAG, show); } } return -1; } /** * 断开当前连接的网络 */ public void disconnectWifi() { int netId = getCurrentNetworkId(); mWifiManager.disableNetwork(netId); mWifiManager.disconnect(); mWifiInfo = null; } /** * 检查当前网络状态 * 如果有wifi链接,返回true,如果没有就返回false */ public boolean getWifiConnectState() { return mWifiInfo != null ? true : false; } /** * @return 当前网络的名字,如果没有就返回null,否则返回string */ public String getCurrentSSID(){ return (mWifiInfo == null) ? null :mWifiInfo.getSSID(); } /** * 得到连接的ID,如果没有就返回0,否则返回正确的id */ public int getCurrentNetworkId() { return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId(); } /** * 得到IP地址,出错时返回0 */ public int getCurrentIPAddress() { return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress(); } /** * 得到MAC地址 * @return 出錯了返回null */ public String getCurrentMacAddress() { return (mWifiInfo == null) ? null : mWifiInfo.getMacAddress(); } /** * 得到接入点的BSSID * @return 出錯返回null */ public String getCurrentBSSID() { return (mWifiInfo == null) ? null : mWifiInfo.getBSSID(); } /** * 得到WifiInfo的所有信息包 * @return 出错了返回null */ public String getCurrentWifiInfo() { return (mWifiInfo == null) ? null : mWifiInfo.toString(); } // 锁定WifiLock public void acquireWifiLock() { mWifiLock.acquire(); } // 解锁WifiLock public void releaseWifiLock() { // 判断时候锁定 if (mWifiLock.isHeld()) { mWifiLock.acquire(); } } // 创建一个WifiLock public void creatWifiLock() { mWifiLock = mWifiManager.createWifiLock("Test"); } // 得到配置好的网络 public List<WifiConfiguration> getConfiguration() { return mWifiConfigList; } /** * @param index * @return 没有连接到返回false,链接成功返回true */ public boolean connectConfiguration(int index) { // 索引大于配置好的网络索引返回 if (index >= mWifiConfigList.size()) { return false; } // 连接配置好的指定ID的网络 return mWifiManager.enableNetwork(mWifiConfigList.get(index).networkId,true); } }
测试代码
package com.kale.socketactivity;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.List;import android.net.wifi.ScanResult;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WifiAdmin wifi = new WifiAdmin(this); //wifi.closeNetCard(); //wifi.openNetCard(); /*switch (wifi.getNetCardState()) { case WifiAdmin.IS_CLOSED: System.out.println(WifiAdmin.IS_CLOSED); break; case WifiAdmin.IS_CLOSING: System.out.println(WifiAdmin.IS_CLOSING); break; case WifiAdmin.IS_OPENED: System.out.println(WifiAdmin.IS_OPENED); break; case WifiAdmin.IS_OPENING: System.out.println(WifiAdmin.IS_OPENING); break; default: break; }*/ //wifi.scan(); //wifi.getScanResult(); /*List<ScanResult> list = wifi.getScanResult(); for (int i = 0; i < list.size(); i++) { System.out.println("No = "+ i); System.out.println("BSSID = "+ list.get(i).BSSID); System.out.println("capabilities = " + list.get(i).capabilities); System.out.println("frequency = " + list.get(i).frequency); System.out.println("level = " + list.get(i).level); System.out.println("SSID = " + list.get(i).SSID); System.out.println("timestamp = " + list.get(i).timestamp); }*/ //System.out.println("你选择的网络的index为"+wifi.getUniqueId("CMCC-EDU")); //wifi.disconnectWifi(); //wifi.getWifiConnectState();/* System.out.println("当前网络的BSSID = "+wifi.getCurrentBSSID() + "\n" +"Ip = "+wifi.getCurrentIPAddress() + "\n" +"Mac = "+wifi.getCurrentMacAddress() + "\n" +"id = "+wifi.getCurrentNetworkId() + "\n" +"ssid = "+wifi.getCurrentSSID() + "\n" +"wifiInfo = "+wifi.getCurrentWifiInfo());*/ } }
操作Wifi的工具类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。