Java 获取扫描WiFi_android wifi常用操作(扫描wifi,开启关闭wifi等)
【实例简介】在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面。简单介绍一下:大致可以分为四个主要的类ScanResult,wifiConfiguration,WifiInfo,WifiManager(1)ScanResult,主要是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。(2)wifiConfiguration
【实例简介】
在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面。简单介绍一下:
大致可以分为四个主要的类ScanResult,wifiConfiguration,WifiInfo,WifiManager
(1)ScanResult,主要是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。
(2)wifiConfiguration 在我们连通一个wifi 接入点的时候,需要获取到的一些信息。大家可以跟我们有线的设备进行对比一下。
(3)WifiInfo 在我们的wifi 已经连通了以后,可以通过这个类获得一些已经连通的wifi 连接的信息获取当前链接的信息,这里信息就比较简单了,这里简单介绍一下这里的方法:
getBSSID() 获取BSSID
getDetailedStateOf() 获取客户端的连通性
getHiddenSSID() 获得SSID 是否被隐藏
getIpAddress() 获取IP 地址
getLinkSpeed() 获得连接的速度
getMacAddress() 获得Mac 地址
getRssi() 获得802.11n 网络的信号
getSSID() 获得SSID
getSupplicanState() 返回具体客户端状态的信息
(4)wifiManager 这个不用说,就是用来管理我们的wifi 连接,这里已经定义好了一些类,可以供我们使用。这里来说相对复杂,里面的内容比较多,但是通过字面意思,我们还是可以获得很多相关的信息。这个类里面预先定义了许多常量,我们可以直接使用,不用再次创建。
【实例截图】
【核心代码】
package org.sunchao;
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";
private StringBuffer mStringBuffer = new StringBuffer();
private List listResult;
private ScanResult mScanResult;
// 定义WifiManager对象
private WifiManager mWifiManager;
// 定义WifiInfo对象
private WifiInfo mWifiInfo;
// 网络连接列表
private List mWifiConfiguration;
// 定义一个WifiLock
WifiLock mWifiLock;
/**
* 构造方法
*/
public WifiAdmin(Context context) {
mWifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
mWifiInfo = mWifiManager.getConnectionInfo();
}
/**
* 打开Wifi网卡
*/
public void openNetCard() {
if (!mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(true);
}
}
/**
* 关闭Wifi网卡
*/
public void closeNetCard() {
if (mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
}
}
/**
* 检查当前Wifi网卡状态
*/
public void checkNetCardState() {
if (mWifiManager.getWifiState() == 0) {
Log.i(TAG, "网卡正在关闭");
} else if (mWifiManager.getWifiState() == 1) {
Log.i(TAG, "网卡已经关闭");
} else if (mWifiManager.getWifiState() == 2) {
Log.i(TAG, "网卡正在打开");
} else if (mWifiManager.getWifiState() == 3) {
Log.i(TAG, "网卡已经打开");
} else {
Log.i(TAG, "---_---晕......没有获取到状态---_---");
}
}
/**
* 扫描周边网络
*/
public void scan() {
mWifiManager.startScan();
listResult = mWifiManager.getScanResults();
if (listResult != null) {
Log.i(TAG, "当前区域存在无线网络,请查看扫描结果");
} else {
Log.i(TAG, "当前区域没有无线网络");
}
}
/**
* 得到扫描结果
*/
public String getScanResult() {
// 每次点击扫描之前清空上一次的扫描结果
if (mStringBuffer != null) {
mStringBuffer = new StringBuffer();
}
// 开始扫描网络
scan();
listResult = mWifiManager.getScanResults();
if (listResult != null) {
for (int i = 0; i < listResult.size(); i ) {
mScanResult = listResult.get(i);
mStringBuffer = mStringBuffer.append("NO.").append(i 1)
.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 mStringBuffer.toString();
}
/**
* 连接指定网络
*/
public void connect() {
mWifiInfo = mWifiManager.getConnectionInfo();
}
/**
* 断开当前连接的网络
*/
public void disconnectWifi() {
int netId = getNetworkId();
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
mWifiInfo = null;
}
/**
* 检查当前网络状态
*
* @return String
*/
public void checkNetWorkState() {
if (mWifiInfo != null) {
Log.i(TAG, "网络正常工作");
} else {
Log.i(TAG, "网络已断开");
}
}
/**
* 得到连接的ID
*/
public int getNetworkId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
}
/**
* 得到IP地址
*/
public int getIPAddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
}
// 锁定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 getConfiguration() {
return mWifiConfiguration;
}
// 指定配置好的网络进行连接
public void connectConfiguration(int index) {
// 索引大于配置好的网络索引返回
if (index >= mWifiConfiguration.size()) {
return;
}
// 连接配置好的指定ID的网络
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
true);
}
// 得到MAC地址
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
}
// 得到接入点的BSSID
public String getBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
}
// 得到WifiInfo的所有信息包
public String getWifiInfo() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
}
// 添加一个网络并连接
public int addNetwork(WifiConfiguration wcg) {
int wcgID = mWifiManager.addNetwork(mWifiConfiguration.get(3));
mWifiManager.enableNetwork(wcgID, true);
return wcgID;
}
}
更多推荐
所有评论(0)