Android开发 无线Wifi+WifiUtil工具类,Android面试总结

Log.i(“AddWifiConfig”,“equals”);

WifiConfiguration wifiCong = new WifiConfiguration();

wifiCong.SSID = “”“+wifi.SSID+”“”;//“转义字符,代表”

wifiCong.preSharedKey = “”“+pwd+”“”;//WPA-PSK密码

wifiCong.hiddenSSID = false;

wifiCong.status = WifiConfiguration.Status.ENABLED;

wifiId = localWifiManager.addNetwork(wifiCong);//将配置好的特

定WIFI密码信息添加,添加完成后默认是不激活状态,成功返回ID,否则为-1

if(wifiId != -1){

return wifiId;

}

}

}

return wifiId;

}

7.根据步骤6配置好需要连接的WIFI密码信息后,下面通过networkId连接指定WIFI。在连接经过步骤6刚添加配置信息的WIFI信息之前需要重新执行下步骤4,得到新的配置好信息的列表

//连接指定Id的WIFI

public boolean ConnectWifi(int wifiId){

for(int i = 0; i < wifiConfigList.size(); i++){

WifiConfiguration wifi = wifiConfigList.get(i);

if(wifi.networkId == wifiId){

while(!(localWifiManager.enableNetwork(wifiId, true))){//激活该Id,建立连接

//status:0–已经连接,1–不可连接,2–可以连接

Log.i(“ConnectWifi”,String.valueOf(wifiConfigList.get(wifiId).status));

}

return true;

}

}

return false;

}

二、Wifi的开发示例程序

这个程序运行后可以扫描周边的Wifi,并且做连接,还有历史记录

程序运行后的界面:

可以点击对应的按钮,显示周边的wifi信息,和连接的Wifi历史记录。点击某个Wifi条目,就是连接的操作,输入正确的密码就可以完成Wifi的连接

(一) 添加权限

(二) 布局代码

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:orientation=“vertical”>

<Button

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:onClick=“open”

android:text=“打开wifi” />

<Button

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:onClick=“close”

android:text=“关闭wifi” />

<Button

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:onClick=“scan”

android:text=“扫描wifi” />

<Button

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:onClick=“getGood”

android:text=“获取连接过的wifi配置信息” />

<ListView

android:id=“@+id/lv”

android:layout_width=“match_parent”

android:layout_height=“wrap_content” />

(三) WifiUtil工具类

/**

  • wife使用的工具类

*/

public class WifiUtil {

// WifiManager.WIFI_STATE_ENABLED WiFi已打开

// WifiManager.WIFI_STATE_ENABLING WiFi打开中

// WifiManager.WIFI_STATE_DISABLING WiFi关闭中

// WifiManager.WIFI_STATE_DISABLED WiFi已关闭

// WifiManager.WIFI_STATE_UNKNOWN 未知的WiFi状态

// 定义一个WifiManager对象

private WifiManager mWifiManager;

// 定义一个WifiInfo对象

private WifiInfo mWifiInfo;

// 扫描出的网络连接列表

private List mWifiList;

// 网络连接列表

private List mWifiConfigurations;

WifiLock mWifiLock;

Context mContext;

//传入上下文

public WifiUtil(Context context) {

// 取得WifiManager对象

mContext = context;

mWifiManager = (WifiManager) context

.getSystemService(Context.WIFI_SERVICE);

// 取得WifiInfo对象

mWifiInfo = mWifiManager.getConnectionInfo();

}

// 打开wifi

public void openWifi() {

if (!mWifiManager.isWifiEnabled()) {

mWifiManager.setWifiEnabled(true);

}

}

//判断wife是否是连接状态

public boolean isConn() {

ConnectivityManager connManager = (ConnectivityManager) mContext

.getSystemService(mContext.CONNECTIVITY_SERVICE);

NetworkInfo mWifi = connManager

.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

return mWifi.isConnected();

}

// 关闭wifi

public void closeWifi() {

if (mWifiManager.isWifiEnabled()) {

mWifiManager.setWifiEnabled(false);

}

}

// 检查当前wifi状态

public int checkState() {

return mWifiManager.getWifiState();

}

// 锁定wifiLock

public void acquireWifiLock() {

mWifiLock.acquire();

}

// 解锁wifiLock

public void releaseWifiLock() {

// 判断是否锁定

if (mWifiLock.isHeld()) {

mWifiLock.acquire();

}

}

// 创建一个wifiLock

public void createWifiLock() {

mWifiLock = mWifiManager.createWifiLock(“test”);

}

// 得到配置好的网络

public List getConfiguration() {

return mWifiConfigurations;

}

// 指定配置好的网络进行连接

public boolean connetionConfiguration(int index) {

if (index > mWifiConfigurations.size()) {

return false;

}

// 连接配置好指定ID的网络

return mWifiManager.enableNetwork(mWifiConfigurations.get(index).networkId, true);

}

public void startScan() {

mWifiManager.startScan();

// 得到扫描结果

mWifiList = mWifiManager.getScanResults();

// 得到配置好的网络连接

mWifiConfigurations = mWifiManager.getConfiguredNetworks();

}

// 得到网络列表

public List getWifiList() {

return mWifiList;

}

// 查看扫描结果

public StringBuffer lookUpScan() {

StringBuffer sb = new StringBuffer();

for (int i = 0; i < mWifiList.size(); i++) {

sb.append(“Index_” + new Integer(i + 1).toString() + “:”);

// 将ScanResult信息转换成一个字符串包

// 其中把包括:BSSID、SSID、capabilities、frequency、level

sb.append((mWifiList.get(i)).toString()).append(“\n”);

}

return sb;

}

public String getMacAddress() {

return (mWifiInfo == null) ? “NULL” : mWifiInfo.getMacAddress();

}

public String getBSSID() {

return (mWifiInfo == null) ? “NULL” : mWifiInfo.getBSSID();

}

public int getIpAddress() {

return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();

} // 得到连接的ID

public String getSSID() {

return (mWifiInfo == null) ? “” : mWifiInfo.getSSID().replace(“”", “”);

} // 得到连接的ID

public int getNetWordId() {

return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();

} // 得到wifiInfo的所有信息

public String getWifiInfo() {

return (mWifiInfo == null) ? “NULL” : mWifiInfo.toString();

}

public String getGateway() {

return mWifiInfo == null ? “NULL”
intToIp(mWifiManager.getDhcpInfo().gateway);

}

private String intToIp(int paramInt) {

return (paramInt & 0xFF) + “.” + (0xFF & paramInt >> 8) + “.”

  • (0xFF & paramInt >> 16) + “.” + (0xFF & paramInt >> 24);

}

// 添加一个网络并连接

public boolean addNetWork(WifiConfiguration configuration) {

int wcgId = mWifiManager.addNetwork(configuration);

return mWifiManager.enableNetwork(wcgId, true);

}

// 断开指定ID的网络

public void disConnectionWifi(int netId) {

mWifiManager.disableNetwork(netId);

mWifiManager.disconnect();

}

public WifiConfiguration createWifiInfo(String SSID, String Password,

int TYPE) {

WifiConfiguration config = new WifiConfiguration();

config.allowedAuthAlgorithms.clear();

config.allowedGroupCiphers.clear();

config.allowedKeyManagement.clear();

config.allowedPairwiseCiphers.clear();

config.allowedProtocols.clear();

config.SSID = “”" + SSID + “”";

WifiConfiguration tempConfig = this.IsExsits(SSID);

if (tempConfig != null) {

mWifiManager.removeNetwork(tempConfig.networkId);

}

if (TYPE == 1) // WIFICIPHER_NOPASS

{

// config.wepKeys[0] = “”;

config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

// config.wepTxKeyIndex = 0;

}

if (TYPE == 2) // WIFICIPHER_WEP

{

config.hiddenSSID = true;

config.wepKeys[0] = “”" + Password + “”";

config.allowedAuthAlgorithms

.set(WifiConfiguration.AuthAlgorithm.SHARED);

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);

config.allowedGroupCiphers

.set(WifiConfiguration.GroupCipher.WEP104);

config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

config.wepTxKeyIndex = 0;

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节

还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

一线互联网面试专题

379页的Android进阶知识大全

379页的Android进阶知识大全

点击:

Android架构视频+BAT面试专题PDF+学习笔记》即可免费获取~

52525157)]
[外链图片转存中…(img-6kfNew85-1711352525158)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-qJa7lhmf-1711352525159)]

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节

还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

[外链图片转存中…(img-vpZiBCCK-1711352525159)]

[外链图片转存中…(img-kHPLf6l5-1711352525160)]

[外链图片转存中…(img-3adVddqq-1711352525161)]

点击:

Android架构视频+BAT面试专题PDF+学习笔记》即可免费获取~

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值