Android中WLAN的广播监听的是WLAN状态的改变 ,Action是WifiManager.WIFI_STATE_CHANGED_ACTION,WLAN的状态系统定义了5种,分别是:
WIFI_STATE_DISABLED WLAN已经关闭
WIFI_STATE_DISABLING WLAN正在关闭
WIFI_STATE_ENABLED
WLAN已经打开WIFI_STATE_ENABLING
WLAN正在打开WIFI_STATE_UNKNOWN 未知
一、监听设备打开WiFi开关的5中状态
1. 监听WiFi开关状态的广播创建一个类 WLANListener
public class WLANListener {
private Context mContext;
private WLANBroadcastReceiver receiver;
private WLANStateListener mWLANStateListener;
//构造方法中实例化一个监听广播
public WLANListener(Context context) {
mContext = context;
receiver = new WLANBroadcastReceiver();
}
//调用此方法来开启监听广播
public void register(WLANStateListener listener) {
mWLANStateListener = listener;
if (receiver != null) {
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
mContext.registerReceiver(receiver, filter);
}
}
//调用此方法来关闭监听广播
public void unregister() {
if (receiver != null) {
mContext.unregisterReceiver(receiver);
}
}
//监听广播内部类
private class WLANBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
String action = intent.getAction();
/** wifi状态改变 */
if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
if (mWLANStateListener != null) {
Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_CHANGED_ACTION”);
mWLANStateListener.onStateChanged();
}
}
/**
* WIFI_STATE_DISABLED WLAN已经关闭
* WIFI_STATE_DISABLING WLAN正在关闭
* WIFI_STATE_ENABLED WLAN已经打开
* WIFI_STATE_ENABLING WLAN正在打开
* WIFI_STATE_UNKNOWN 未知
*/
int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
switch (state) {
case WifiManager.WIFI_STATE_DISABLED:
if (mWLANStateListener != null) {
Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_DISABLED”);
mWLANStateListener.onStateDisabled();
}
break;
case WifiManager.WIFI_STATE_DISABLING:
if (mWLANStateListener != null) {
Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_DISABLING”);
mWLANStateListener.onStateDisabling();
}
break;
case WifiManager.WIFI_STATE_ENABLED:
if (mWLANStateListener != null) {
Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_ENABLED”);
mWLANStateListener.onStateEnabled();
}
break;
case WifiManager.WIFI_STATE_ENABLING:
if (mWLANStateListener != null) {
Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_ENABLING”);
mWLANStateListener.onStateEnabling();
}
break;
case WifiManager.WIFI_STATE_UNKNOWN:
if (mWLANStateListener != null) {
Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_UNKNOWN”);
mWLANStateListener.onStateUnknow();
}
break;
}
}
}
}
//WiFi开关5中状态接口
public interface WLANStateListener {
void onStateChanged();
void onStateDisabled();
void onStateDisabling();
void onStateEnabled();
void onStateEnabling();
void onStateUnknow();
}
}
2.在Activity中调用方法
private WLANListener Wifilistener;
/**
* 开始监听WiFi开关状态
* */
public void startWifi(){
Wifilistener = new WLANListener(this);
Wifilistener.register(new WLANStateListener() {
@Override
public void onStateUnknow() {//未知
}
@Override
public void onStateEnabling() {//正在打开WiFi开关
}
@Override
public void onStateEnabled() { //已经打开WiFi开关
}
@Override
public void onStateDisabling() {//WLAN正在关闭
}
@Override
public void onStateDisabled() {//WLAN已经关闭
}
@Override
public void onStateChanged() {//WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)判断监 //听Action是否是WIFI_STATE_CHANGED_ACTION
}
});
}
二、监听设备是否已经连接上WIFI
private WifiReceiver receiver ;
private class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {// wifi连接上与否
Log.e(“+++网络状态改变+++”, “网络状态改变”);
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.CONNECTED)) {
//连接WiFi成功
}
}
}
}
//开启广播调用方法
private void initReceiver() {
receiver = new WifiReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(receiver, filter);
}
//关闭广播
unregisterReceiver(receiver);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119235.html