|
在项目中我们经常有这样的需求,在下载图片或其他文件时会遇到网络不稳定的问题,导致下载失败等,因此,
监控网络连接的状态尤为重要,最近我做的一个项目主要依靠连接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" /> |
|
|
|
|
|
|