二维码的妙用:通过Zxing实现wifi账号密码分享功能

本文介绍如何通过二维码技术实现WiFi账号和密码的分享。借助于ZXing库,实现了获取已连接WiFi信息及生成和解析二维码的功能,简化了在特定场景下WiFi共享的流程。
摘要由CSDN通过智能技术生成

        二维码是搭载信息的一种载体,通过二维码可以传递名片、网址、商品信息等,本文讲到二维码的另外一种妙用:通过二维码实现wifi账号和密码分享。

        关于二维码的基础知识,请访问:二维码的生成细节和原理

        试想这样一种场景:一伙人去同一餐馆或者在一起开会,有的人之前去过且已经使用过那个场景的wifi账号,所以一去手机就能够直接连上那里的wifi,但有的同学是第一次去,也有连接wifi的需求,这时我们一般是通过别人告知wifi账号和密码然后手动登陆,但问题是有时候已经连上wifi的人也不记得wifi的密码了,本文结合这个需求场景,做了一个wifi账号和密码分享的小demo,前提是双方都需要安装这个app,并且分享wifi的一方需要有root权限(目前是,也可以将分享wifi的客户端作为热点,然后将热点分享给其他人,这个可以自行研究),这样减少了手动输入密码的麻烦。


本文主要介绍通过二维码实现wifi分享的两个核心功能:

1、获取本机已经连接上的wifi账号、密码和加密方式;

2、给定指定内容生成二维码,扫描二维码解析出其中搭载的信息。


1、获取本机已经连接上的wifi账号、密码和加密方式:

所有的事情都可以通过下面这个类搞定:

public class WifiAdmin {
    public WifiAdmin(Context context) {   
        mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);   
        mWifiInfo = mWifiManager.getConnectionInfo();   
    }   
   
    // 打开WIFI    
    public void openWifi() {   
        if (!mWifiManager.isWifiEnabled()) {   
            mWifiManager.setWifiEnabled(true);   
        }   
    }   
   
    // 关闭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 creatWifiLock() {   
        mWifiLock = mWifiManager.createWifiLock("Test");   
    }   
   
    // 得到配置好的网络    
    public List<WifiConfiguration> getConfiguration() {   
        return mWifiConfiguration;   
    }   
   
    // 指定配置好的网络进行连接    
    public void connectConfiguration(int index) {   
        // 索引大于配置好的网络索引返回    
        if (index > mWifiConfiguration.size()) {   
            return;   
        }   
        // 连接配置好的指定ID的网络    
        mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,   
                true);   
    }   
   
    public void startScan() {   
        mWifiManager.startScan();   
        // 得到扫描结果    
        mWifiList = mWifiManager.getScanResults();   
        // 得到配置好的网络连接    
        mWifiConfiguration = mWifiManager.getConfiguredNetworks();   
    }   
   
    // 得到网络列表    
    public List<ScanResult> getWifiList() {   
        return mWifiList;   
    }   
   
    // 查看扫描结果    
    @SuppressLint("UseValueOf")
	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地址    
    public String getMacAddress() {   
        re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值