监听wifi热点连接状态变化

本文介绍如何监听WiFi连接状态的变化,包括连接、成功、失败,并探讨在WiFi热点关闭时的监听。同时,提到了在处理WiFi热点事件时要注意网络强度变化可能导致的误触发。在开发中遇到的问题,如重复SSID、配置好的WiFi热点信息以及连接成功的WiFi位置等,也进行了总结。提供了一个封装好的WiFi支持类的源码链接。
摘要由CSDN通过智能技术生成

1 需求:监听网络是正在连接,还是连接成功,还是连接失败
监听网络状态变化需要发送一个广播, 广播的参数为:

WifiManager.NETWORK_STATE_CHANGED_ACTION

然后接收广播,(注意,网络状态变化时,广播中会获取一个:NetworkInfo ,通过NetworkInfo 的值进行判断):

        if(WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())){
                NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
                if(NetworkInfo.State.DISCONNECTED == info.getState()){//wifi没连接上

                }else if(NetworkInfo.State.CONNECTED == info.getState()){//wifi连接上了

                }else if(NetworkInfo.State.CONNECTING == info.getState()){//正在连接

                }
            }

2:需求:当某一个wifi热点关闭时, 我们需要监听该变化,并且做出相应的反应;
发送一个广播,参数为:

WifiManager.SCAN_RESULTS_AVAILABLE_ACTION

接受广播:

            if(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(intent.getAction())){
                LogUtils.Debug_E(WifiSettingFragment.class, "网络列表变化了!");
            }

我这边测试结果是:不仅仅是当关闭或开启一个wifi热点时, 可以监听到,还有网络wifi强度等变化时,都能够监听到;所以小伙伴处理业务逻辑的时候,这一点是需要注意的;

接下来我总结一下我在项目中wifi开发遇到的坑:
1:getScanResults()获取到结果会有重复SSID的wifi热点,我们需要去重;
2:getConfiguredNetworks()是配置好的wifi热点信息,也就是连接过的wifi热点信息;
3:一般来说,如果连接成功或者正在连接的话,该wifi热点都是在UI列表第一个为位置,这一点是需要注意的;

最后附上我这边封装好的wifi支持类,里面有可能你用到的方法;

package com.app.test.wifitest.wifi;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.text.TextUtils;
import android.util.Log;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by ${liumegnqiang} on 2017/6/20.
 */

public class WifiSupport {
   
    private static final S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值