本篇博客主要记录一下Android中打开Wifi、获取Wifi接入点信息及连接指接入点的方法。
自己写的demo主要用于测试接口的基本功能,因此界面及底层逻辑比较粗糙。
demo的整体界面如下所示:
上图中的OPEN按键负责开启Wifi;
GET按键负责获取扫描到的接入点信息。
当获取到接入点信息后,我选取了其中的名称及信号强度,以列表的形式显示在主界面下方,如下图:
当点击列表中的Item时,就会去连接对应的接入点。
自己的逻辑比较简单,测试时的代码,假定连接的是不许要密码或密码已知的接入点。
demo的布局文件就不介绍了,就是Button和RecyclerView。
主要记录一下,使用到的核心代码。
....................
//Open按键点击后的逻辑
mOpenWifiButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//WifiManager的isWifiEnabled接口,用于判断Wifi开关是否已经开启
if (!mWifiManager.isWifiEnabled()) {
//setWifiEnabled接口用于开启Wifi
mWifiManager.setWifiEnabled(true);
mMainHandler.post(mMainRunnable);
}
}
});
....................
mMainRunnable的代码如下,主要用于判断Wifi是否开启成功。
................
private Runnable mMainRunnable = new Runnable() {
@Override
public void run() {
if (mWifiManager.isWifiEnabled()) {
//开启成功后,使能Get按键
mGetWifiInfoButton.setEnabled(true);
} else {
mMainHandler.postDelayed(mMainRunnable, 1000);
}
}
};
...............
这部分代码,主要使用了WifiManager的公有接口,开启Wifi开关及判断开启状态。
这部分操作需要的权限是:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
Get按键被点击后,对应的代码如下:
.................
mGetWifiInfoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mWifiManager.isWifiEnabled()) {
//getScanResults接口将返回List<ScanResult>
//ScanResult中保留了每个接入点的基本信息
mScanResultList =