Android WIFI是否连接,网络状态监测工具类

简介: Android WIFI是否连接,网络状态监测工具类

WIF工具类


示例代码


  //Wifi网络监测线程  然后在onCreate方法里面开启
    private Handler mHandlerWifi = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0) {
              //图标显示
                WifiStateUtils.checkWifiStateImg(MainActivity.this,ivWifiState);
                //文字显示
                tvWifiTx.setText(WifiStateUtils.checkWifiStateTxt(MainActivity.this));
                sendEmptyMessageDelayed(0, 1000);
            }
        }
    };

onCreate方法中调用

//每过一秒钟监测一次wifi的网络状态
mHandlerWifi.sendEmptyMessageDelayed(0, 1000);


工具类

package com.ypl.studytv.util;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.widget.ImageView;
import com.ypl.studytv.R;
/**
 * WIFI状态监测显示工具类
 * author llw
 */
public class WifiStateUtils {
    /**
     * 检查wifi是否处开连接状态
     * @return
     */
    public static boolean isWifiConnect(Context context) {
        ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mWifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        return mWifiInfo.isConnected();
    }
    /**
     * 检查wifi强弱并更改图标显示  按wifi的监测来说,总共五级,这里只做四级,
     */
    public static void checkWifiStateImg(Context context,ImageView imageView) {
        if (isWifiConnect(context)) {
            WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
            int wifi = mWifiInfo.getRssi();//获取wifi信号强度
            if (wifi > -50 && wifi < 0) {//最强  满格信号 4格
                imageView.setImageResource(R.mipmap.icon_wifi_4);
            } else if (wifi > -70 && wifi < -50) {//较强  3格
                imageView.setImageResource(R.mipmap.icon_wifi_3);
            } else if (wifi > -80 && wifi < -70) {//较弱  2格
                imageView.setImageResource(R.mipmap.icon_wifi_2);
            } else if (wifi > -100 && wifi < -80) {//微弱 1格
                imageView.setImageResource(R.mipmap.icon_wifi_1);
            }
        } else {
            //无连接
            imageView.setImageResource(R.mipmap.icon_wifi_none);// 在这里  0格  表示没有网络
        }
    }
    /**
     * 检查wifi强弱 文字
     */
    public static String checkWifiStateTxt(Context context){
        String data = null;
        if (isWifiConnect(context)) {
            WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
            int wifi = mWifiInfo.getRssi();//获取wifi信号强度
            if (wifi > -50 && wifi < 0) {//最强  满格信号 4格
                data = "最强";
            } else if (wifi > -70 && wifi < -50) {//较强  3格
                data = "较强";
            } else if (wifi > -80 && wifi < -70) {//较弱  2格
                data = "较弱";
            } else if (wifi > -100 && wifi < -80) {//微弱 1格
                data = "微弱";
            }
        } else {
            //无连接
            data = "无信号";// 在这里  0格  表示没有网络
        }
        return data;
    }
    /**
     * 检查wifi强弱 文字
     */
    public static int checkWifiStateNum(Context context){
        int data = 0;
        if (isWifiConnect(context)) {
            WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
            int wifi = mWifiInfo.getRssi();//获取wifi信号强度
            if (wifi > -50 && wifi < 0) {//最强  满格信号 4格
                data = 4;
            } else if (wifi > -70 && wifi < -50) {//较强  3格
                data = 3;
            } else if (wifi > -80 && wifi < -70) {//较弱  2格
                data = 2;
            } else if (wifi > -100 && wifi < -80) {//微弱 1格
                data = 1;
            }
        } else {
            //无连接
            data = 0;// 在这里  0格  表示没有网络
        }
        return data;
    }
}


希望能帮到您,山高水长,后会有期~

相关文章
|
22天前
|
Ubuntu
虚拟机Ubuntu连接不了网络的解决方法
虚拟机Ubuntu连接不了网络的解决方法
|
1月前
|
数据库 Android开发 开发者
构建高效Android应用:采用Kotlin协程优化网络请求处理
【2月更文挑战第30天】 在移动应用开发领域,网络请求的处理是影响用户体验的关键环节。针对Android平台,利用Kotlin协程能够极大提升异步任务处理的效率和简洁性。本文将探讨如何通过Kotlin协程优化Android应用中的网络请求处理流程,包括协程的基本概念、网络请求的异步执行以及错误处理等方面,旨在帮助开发者构建更加流畅和响应迅速的Android应用。
|
2月前
|
存储 网络安全 Python
WiFi连接树莓派【2月更文挑战第2天】
要通过WiFi连接树莓派并显示其摄像头视频信息,您需要按照以下步骤操作: 1. 确保您的电脑和树莓派已连接到同一个WiFi网络。 2. 安装Python和必要的库:在您的电脑上安装Python 3.6或更高版本,并安装pip(Python包管理器)。然后,通过pip安装以下库: 【2月更文挑战第2天】
23 1
|
1月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 关闭PPP(Point-to-Point Protocol)连接 ppp-off命令 使用指南
【Shell 命令集合 网络通讯 】Linux 关闭PPP(Point-to-Point Protocol)连接 ppp-off命令 使用指南
42 1
|
1月前
|
监控 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
59 1
|
2月前
|
存储 网络协议 Linux
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
36 0
|
6天前
|
运维 安全 Cloud Native
安全访问服务边缘(SASE):网络新时代的安全与连接解决方案
SASE(安全访问服务边缘)是一种云基安全模型,结合了网络功能和安全策略,由Gartner在2019年提出。它强调身份驱动的私有网络、云原生架构和全面边缘支持,旨在解决传统WAN和安全方案的局限性,如高延迟和分散管理。SASE通过降低IT成本、提升安全响应和网络性能,应对数据分散、风险控制和访问速度等问题,适用于移动办公、多分支办公等场景。随着网络安全挑战的增加,SASE将在企业的数字化转型中扮演关键角色。
|
7天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android&#39;s AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
9 0
|
7天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
8 0
|
25天前
|
缓存 网络协议 数据库连接
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
22 0