您的位置:首页 > 移动开发 > Android开发

Android监控wifi连接状态

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

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

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

package com.front.wifi_action;

import android.app.Activity;
import android.content.IntentFilter;
import android.net.wifi.WifiManager;
import android.os.Bundle;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

WifiBroad wifiReceiver=new WifiBroad();
IntentFilter filter=new IntentFilter();
filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
this.registerReceiver(wifiReceiver,filter);
}

}


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

package com.front.wifi_action;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;

public class WifiBroad extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)) {
} else if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
System.out.println("网络状态改变");
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {// 如果断开连接
System.out.println("wifi网络连接断开 ");
}

if(info.getState().equals(NetworkInfo.State.CONNECTING)){
System.out.println("连接到wifi网络");
}
} else if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
// WIFI开关
int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_DISABLED);
if (wifistate == WifiManager.WIFI_STATE_DISABLED) {// 如果关闭

System.out.println("系统关闭wifi");
}

if(wifistate==WifiManager.WIFI_STATE_ENABLED){
System.out.println("系统开启wifi");
}
}

}


第三步:最后记得添加权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: