android wifi 的链接

本文详细介绍了一个简单的Android应用程序如何实现WiFi连接的功能。从获取WiFiManager对象开始,到检查WiFi状态、打开WiFi、扫描WiFi网络,最后完成WiFi连接。此外,还介绍了如何通过不同类型的加密方式来配置WiFi连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  wifi链接的步骤如下(至于wifi通讯部分是没有的):



1.得到wifimanager对象

// 构造器
public WifiUtil(Context context) {
    // 取得WifiManager对象
    mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    // 取得WifiInfo对象
    mWifiInfo = mWifiManager.getConnectionInfo();
}

2.检查wifi状态

// 检查当前WIFI状态
public int checkState() {
    return mWifiManager.getWifiState();
}

3.打开wifi

// 打开WIFI
public void openWifi() {
    if (!mWifiManager.isWifiEnabled()) {
        mWifiManager.setWifiEnabled(true);
    }
}

4.扫描wifi并得到最新扫描的结果

//扫描
public void startScan() {
    mWifiManager.startScan();
    // 得到扫描结果
    mWifiList = mWifiManager.getScanResults();
    // 得到配置好的网络连接
    mWifiConfiguration = mWifiManager.getConfiguredNetworks();
}

5.连接wifi

mConnect.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String pass = mPass.getText().toString();
        mWifiInfo = new WifiInfo(name, pass);
        new Thread(new Runnable() {
            @Override
            public void run() {
                mWifiUtil.connectWifi(mWifiInfo);
            }
        }).start();
        if (!mRegister) {//第一次链接注册链接成功的广播
            mWifiBroadcastReceiver = new WifiBroadcastReceiver();
            IntentFilter filter = new IntentFilter();
            filter.addAction(WifiManager.RSSI_CHANGED_ACTION);  //信号强度变化
            filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);  //网络状态变化(是否连接上WIFI)
            filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);  //wifi是否打开
            registerReceiver(mWifiBroadcastReceiver, filter);
            mRegister = true;
        }
    }
});
public void connectWifi(com.example.a111.github_settings.bean.WifiInfo remove) {
    openWifi();
    String pass = remove.getPass();
    String ssid = remove.getName();
    int type;
    if (pass.equals("null") || pass.equals("")) {
        pass = "";
        type = 1;
    } else {
        type = 3;
    }
    addNetwork(CreateWifiInfo(ssid, pass, type));
}
// 添加一个网络并连接
public void addNetwork(WifiConfiguration wcg) {
    int wcgID = mWifiManager.addNetwork(wcg);
    mWifiManager.enableNetwork(wcgID, true);
}

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;
    }
    if (Type == 3) //WIFICIPHER_WPA
    {
        config.preSharedKey = "\"" + Password + "\"";
        config.hiddenSSID = true;
        config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
        config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
        //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
        config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
        config.status = WifiConfiguration.Status.ENABLED;
    }
    return config;
}

wifi之间的通讯可以查看  这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值