WifiReciever.java 3.2 KB
package com.sw.laryngoscope.wifi;

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

import com.sw.laryngoscope.common.Constant;
import com.sw.laryngoscope.utils.Logger;


public class WifiReciever extends BroadcastReceiver {
    private static final String WIFI_STATE_CHANGE = "android.net.wifi.WIFI_STATE_CHANGED";//wifi开关变化
    private static final String WIFI_SCAN_RESULT = "android.net.wifi.SCAN_RESULTS";//扫描结果变化
    private static final String WIFI_LINK_RESULT = "android.net.wifi.STATE_CHANGE";//连接结果通知
    private static final String NETWORK_STATE_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE";//网络变化
    private static final String WIFI_GET_IDADDRESS = "android.net.wifi.supplicant.STATE_CHANGE";//是否正在获得IP地址
    private static final String WIFI_POWER_CHANGE = "android.net.wifi.RSSI_CHANGED";//wifi强度变化

    private ConnectivityManager connectivityManager;
    private NetworkInfo info;

    public void onReceive(Context context, Intent intent) {
        NetworkInfo mNetInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);

        if ( intent.getAction().equals("android.net.wifi.STATE_CHANGE") ) {
            if (mNetInfo.getState().equals(NetworkInfo.State.DISCONNECTED)) {
                Logger.e("WifiReciever NETWORK_STATE_CHANGED_ACTION wifi 网络连接断开");
                Constant.isWifiOk = false;
            }

            if ( intent.getAction().equals("android.net.wifi.supplicant.STATE_CHANGE") ) {
                Logger.e("WifiReciever   SUPPLICANT_STATE_CHANGED_ACTION");
                if (intent.getIntExtra("supplicantError", 123) == 1) {
                    Logger.e("密码错误");
                }
            }

            if ( mNetInfo.getState().equals(NetworkInfo.State.CONNECTED) ) {
                WifiInfo localWifiInfo = ((WifiManager)context.getSystemService(Context.WIFI_SERVICE)).getConnectionInfo();
                Logger.e("WifiReciever NETWORK_STATE_CHANGED_ACTION 连接网络 NetworkInfo.State.CONNECTED= " + localWifiInfo.getSSID());
                if ( localWifiInfo.getSSID().equals("<unknown ssid>") ) {
                    Constant.isWifiOk = false;
                } else {
                    //Constant.isWifiOk = true;
                }
            }

        } else if ( intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED") ) {
            int i = intent.getIntExtra("wifi_state", 1);
            Logger.e("WifiReciever  WIFI_STATE_CHANGED_ACTION  " + i);
            if ( i == 1 ) {
                Constant.isWifiOk = false;
            }
        } else if ( ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction()) ) {
            connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            info = connectivityManager.getActiveNetworkInfo();
            if ( info != null && info.isAvailable() ) {
                Constant.isWifiOk = true;
                Logger.d("WifiReciever", "-------------H--------");
            }
        }
    }

}