设为首页 收藏本站
查看: 940|回复: 0

[经验分享] Android监控wifi连接状态

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-1 10:02:37 | 显示全部楼层 |阅读模式
  在项目中我们经常有这样的需求,在下载图片或其他文件时会遇到网络不稳定的问题,导致下载失败等,因此,
  监控网络连接的状态尤为重要,最近我做的一个项目主要依靠连接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" />

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-121203-1-1.html 上篇帖子: 咖啡厅、洗浴中心等公共娱乐场所WIFI无线上网短信认证系统功能升级 下篇帖子: 笔记本上建立WIFI供安卓手机使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表