Android 广播监听wifi

第一步:配置AndroidManifest.xml,在application结点下面添加如下代码

<receiver android:name=".NetworkConnectChangedReceiver" >
     <intent-filter>
         <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
         <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
         <action android:name="android.net.wifi.STATE_CHANGE" />
     </intent-filter>
</receiver>

同样配置AndroidManifest.xml,添加权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

第二步:注册广播

IntentFilter filter = new IntentFilter();
/**
 *     NETWORK_STATE_CHANGED_ACTION
 *
 *    wifi是否连接正常
 *
 */
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);

/**
 *     WIFI_STATE_CHANGED_ACTION
 *
 *     有无wifi源及各个状态间转变
 *
 */
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);

/**
 *   CONNECTIVITY_ACTION
 *
 *   wifi如果打开,关闭,以及连接上可用的连接都会接到监听
 *   这个广播的最大弊端是比上边两个广播的反应要慢,如果只是要监听wifi,我觉得还是用上边两个配合比较合适
 *
 */
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(new NetworkConnectChangedReceiver(new NetworkConnectChangedActionImp()), filter);

第三步:

import android.content.Context;
import android.content.Intent;

public interface NetworkConnectChangedAction {

    void doAfterCONNECTED(Context context , Intent intent);
    void doAfterCONNECTING(Context context , Intent intent);
    void doAfterDISCONNECTED (Context context , Intent intent);
    void doAfterDISCONNECTING (Context context , Intent intent);
    void doAfterSUSPENDED(Context context , Intent intent);
    void doAfterUNKNOWN(Context context , Intent intent);
}
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class NetworkConnectChangedReceiver extends BroadcastReceiver {

    private static NetworkConnectChangedAction action = null;

    static{
        action =  new NetworkConnectChangedActionImp();
    }

    @Override
    public void onReceive(Context context, Intent intent ) {

        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
            ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            /**
             *  GPRS
             */
            //NetworkInfo gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            /**
             *  INFO
             */
            //NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            /**
             *     WIFI
             */
            NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            if (wifi != null) {
                if (NetworkInfo.State.CONNECTED == wifi.getState()) {
                    action.doAfterCONNECTED(context, intent);
                } else if (NetworkInfo.State.CONNECTING  == wifi.getState()) {
                    action.doAfterCONNECTING(context, intent);
                } else if (NetworkInfo.State.DISCONNECTED  == wifi.getState()) {
                    action.doAfterDISCONNECTED(context, intent);
                } else if (NetworkInfo.State.DISCONNECTING  == wifi.getState()) {
                    action.doAfterDISCONNECTING(context, intent);
                } else if (NetworkInfo.State.SUSPENDED  == wifi.getState()) {
                    action.doAfterSUSPENDED(context, intent);
                } else if (NetworkInfo.State.UNKNOWN  == wifi.getState()) {
                    action.doAfterUNKNOWN(context, intent);
                }
            }
        }

    }
}

第四步:具体实现

import android.content.Context;
import android.content.Intent;

public class NetworkConnectChangedActionImp implements NetworkConnectChangedAction{

    @Override
    public void doAfterCONNECTED(Context context, Intent intent) {}

    @Override
    public void doAfterCONNECTING(Context context, Intent intent) {}

    @Override
    public void doAfterDISCONNECTED(Context context, Intent intent) {}

    @Override
    public void doAfterDISCONNECTING(Context context, Intent intent) {}

    @Override
    public void doAfterSUSPENDED(Context context, Intent intent) {}

    @Override
    public void doAfterUNKNOWN(Context context, Intent intent) {}

}

Android 广播监听wifi

时间: 2024-10-09 13:17:55

Android 广播监听wifi的相关文章

Android开发之使用广播监听网络状态变化

我们经常需要判断网络状态的变化,如有无网络,所以需要监听网络状态的变化,比如网络断开,网络连接给予友好提示.如何监听网络状态的变化呢,最近工作中需要用到这个,于是就用广播机制来实现了网络状态的监听. 使用广播机制来监听网络状态主要涉及到以下几点: 1.需要自己编写个网络广播接收器,该接收器继承BroadcastReceiver类,用来接收系统发出的广播.比如我自己写了个NetStatusReceiver广播接收器.代码如下: package com.log.system; import andr

Android开机和关机广播监听

Android开机.关机广播监听 一.开机广播的监听 1.在AndroidManifest.xml文件注册接收开机广播 <receiver android:name=".XXXBroadcastReceiver" > <intent-filter> <!-- 开机广播 --> <action android:name="android.intent.action.BOOT_COMPLETED" /> </inte

关于 Android ios cocos2d 中的广播监听

1. 关于广播监听 第一次使用是在Android中,broadcast.主要用在2个activity之间进行传递数据,发出一个广播,对这个广播有兴趣的就去监听它,做出相应的回应即可.主要是传递数据,触发机制比较好,跟全局变量或者单例有点像,但是使用场合有区别,比如2个activity之间传递数据,activity这种有生命周期的弄成全局变量和单例就不合适了. 2.Android的广播 发送广播: Intent intent = new Intent("OUR_BLE_CENTRAL_MANAGE

Android利用广播监听按下HOME和电源键

package cc.testhome; import cc.testhome.HomeKeyObserver.OnHomeKeyListener; import cc.testhome.PowerKeyObserver.OnPowerKeyListener; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 利用广播监听Home键的按下和长按Home键 * 利用广播监听电源键的按下(关闭屏幕) * *

Android -- 使用广播监听Home键

//广播监听事件类 public class HomeKeyEventBroadCastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { //do what you want System.exit(0); } } private HomeKeyEventBroadCastReceiver homeKeyEventReceiver; prote

Android怎样监听蓝牙耳机的按键事件

写在前面: 直接想要代码非常easy,你直接把滚动栏拉到最底端就能够看到.假设想要十分地了解为什么,那就依照我规划的一步一步来理解.下面測试环境以手头上有的「Bluedio + 红米手机」. 1.蓝牙耳机的使用 蓝牙耳机的使用说明书中都会有相关的具体使用说明,这里拣重点说明一下.除了电源开关,耳机上一般有三个键.例如以下所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2Vhcg==/font/5a6L5L2T/fontsize/40

Android 监听 Android中监听系统网络连接打开或者关闭的实现代码

本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.net.ConnectivityManager;  import android.ne

Android WindowManager 监听返回键及home键

一.监听home键盘,Android Home键系统负责监听,捕获后系统自动处理.有时候,我们需要监听home键处理自己的逻辑,监听方法如下: /** * 监听home键广播 */ private final static BroadcastReceiver homeListenerReceiver = new BroadcastReceiver() { final String SYSTEM_DIALOG_REASON_KEY = "reason"; final String SYS

Android如何监听蓝牙耳机的按键事件(转)

源: Android如何监听蓝牙耳机的按键事件 写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「Bluedio + 红米手机」. 1.蓝牙耳机的使用 蓝牙耳机的使用说明书中都会有相关的详细使用说明,这里拣重点说明一下.除了电源开关,耳机上一般有三个键.如下所示: 它们每个都是多功能键,在不同的情况下有不同的功能.1号键的功能包括:开始播放音乐/停止插入音乐/接听电话/挂断电话:2号键的功能有: