• Android监控wifi连接状态


    在项目中我们经常有这样的需求,在下载图片或其他文件时会遇到网络不稳定的问题,导致下载失败等,因此,

    监控网络连接的状态尤为重要,最近我做的一个项目主要依靠连接wifi来下载,因此就整理了一些用来监控wifi状态的小demo

    第一步:首先在Activity中注册一个监控wifi状态的广播

     1 package com.front.wifi_action;
     2 
     3 import android.app.Activity;
     4 import android.content.IntentFilter;
     5 import android.net.wifi.WifiManager;
     6 import android.os.Bundle;
     7 
     8 public class MainActivity extends Activity {
     9 
    10     @Override
    11     public void onCreate(Bundle savedInstanceState) {
    12         super.onCreate(savedInstanceState);
    13         setContentView(R.layout.activity_main);
    14        
    15         WifiBroad wifiReceiver=new WifiBroad();
    16         IntentFilter filter=new IntentFilter();
    17         filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
    18         filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
    19         filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
    20         this.registerReceiver(wifiReceiver,filter); 
    21     }
    22 
    23 }

    第二步:创建该广播,用来监控wifi的状态

     1 package com.front.wifi_action;
     2 
     3 import android.content.BroadcastReceiver;
     4 import android.content.Context;
     5 import android.content.Intent;
     6 import android.net.NetworkInfo;
     7 import android.net.wifi.WifiInfo;
     8 import android.net.wifi.WifiManager;
     9 
    10 public class WifiBroad extends BroadcastReceiver {
    11 
    12     @Override
    13     public void onReceive(Context context, Intent intent) {
    14         if (intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)) {
    15         } else if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
    16             System.out.println("网络状态改变");
    17             NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
    18             if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {// 如果断开连接
    19                 System.out.println("wifi网络连接断开 ");
    20             }
    21             
    22             if(info.getState().equals(NetworkInfo.State.CONNECTING)){
    23                 System.out.println("连接到wifi网络");
    24             }
    25         } else if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
    26             // WIFI开关
    27             int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_DISABLED);
    28             if (wifistate == WifiManager.WIFI_STATE_DISABLED) {// 如果关闭
    29 
    30                 System.out.println("系统关闭wifi");
    31             }
    32             
    33             if(wifistate==WifiManager.WIFI_STATE_ENABLED){
    34                 System.out.println("系统开启wifi");
    35             }
    36         }
    37 
    38     }

    第三步:最后记得添加权限
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

  • 相关阅读:
    Docker常见应用部署(3)
    数据库 'FileServer' 的版本为 904,无法打开。此服务器支持 852 版及更低版本。不支持降级路径。 无法打开新数据库
    Dockerfile 构建镜像(4)
    DockerHub 镜像仓库(5)
    ASP.NET Core 6.0 中使用 Autofac
    ASP.NET Core 6.0 使用RabbitMQ
    安装node.js环境,构建第一个vue项目
    Chrome 搜索结果始终保持新标签打开
    最短路
    [转载] Open3D显示点云常见方式
  • 原文地址:https://www.cnblogs.com/all88/p/3105543.html
Copyright © 2020-2023  润新知