WIFI 热点的基本使用使用

需求如下

WIFI ( IPhone 3.2.5.9 Wireless Coexistence)
1.打开和关闭AP
2.监听AP开关状态
3.获取AP信息
4.映射BAND到CHANNEL
5.已连接的设备

PS: 部分方法都是隐藏的,使用的时候都是报红提示

private WifiManager mWifiManager = null;
private ConnectivityManager mConnectivityManager = null;

 public void initialize(Context context) {
        Log.i(TAG, "initialize is called.");
        mContext = context;
        if (mContext != null) {
            mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
            mConnectivityManager = ((ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE));
        }
 }
/********************* WIFI *********************/
    ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
            new ConnectivityManager.OnStartTetheringCallback() {
                @Override
                public void onTetheringFailed() {
                    super.onTetheringFailed();
                    Log.i(TAG, "OnStartTetheringCallback:onTetheringFailed.");
                }

                public void onTetheringStarted() {
                    super.onTetheringStarted();
                    Log.i(TAG, "OnStartTetheringCallback:onTetheringStarted.");
                }
            };


    public void openWifiAp() {
        Log.i(TAG, "openWifiAp is called.");
        if (mConnectivityManager != null) {
            mConnectivityManager.startTethering(ConnectivityManager.TETHERING_WIFI, true,
                    mOnStartTetheringCallback, new Handler(Looper.getMainLooper()));
        }
    }

    public void closeWifiAp() {
        Log.i(TAG, "closeWifiAp is called.");
        if (mConnectivityManager != null) {
            mConnectivityManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
        }
    }

    boolean isWifiApEnabled() {
        Log.i(TAG, "isWifiApEnabled is called.");
        boolean result = false;

        if (mWifiManager != null) {
            result = mWifiManager.isWifiApEnabled();
        }

        return result;
    }

    void registerWifiApStateDetecterBroadcast() {
        Log.i(TAG, "registerWifiApStateDetecterBroadcast in.");
        if (null == mContext) return;
        IntentFilter wifiApStateFilter = new IntentFilter();
        wifiApStateFilter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);

        mContext.registerReceiver(mWifiApStateDetecter, wifiApStateFilter);
    }

    void unregisterWifiApStateDetecterBroadcast() {
        Log.i(TAG, "unregisterWifiApStateDetecterBroadcast in.");
        if (null == mContext) return;
        mContext.unregisterReceiver(mWifiApStateDetecter);
        mWifiApStateDetecter = null;
    }

    BroadcastReceiver mWifiApStateDetecter = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i(TAG, "mWifiApStateDetecter onReceive : " + intent.getAction());
            String intentAction = intent.getAction();
            if (intentAction.equals(WifiManager.WIFI_AP_STATE_CHANGED_ACTION)) {
                int state = intent.getIntExtra("wifi_state", 0);
                Log.i(TAG, "Wifi ap state:" + state);
                switch (state) {
                    case WifiManager.WIFI_AP_STATE_DISABLING:
                        Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_DISABLING.");
                    case WifiManager.WIFI_AP_STATE_DISABLED:
                        Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_DISABLED.");
                    case WifiManager.WIFI_AP_STATE_ENABLING:
                        Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_ENABLING.");
                    case WifiManager.WIFI_AP_STATE_ENABLED:
                        Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_ENABLED.");
                    case WifiManager.WIFI_AP_STATE_FAILED:
                        Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_FAILED.");
                        boolean enable = isWifiApEnabled();
                    default:
                        break;
                }
            }
        }
    };

    String getWifiApSSID() {
        Log.i(TAG, "getWifiApSSID is called.");
        String ssid = null;
        if (mWifiManager != null) {
            final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
            if (config != null) {
                ssid = config.SSID;
                if (!TextUtils.isEmpty(ssid)) {
                    Log.i(TAG, "Wifi ap ssid:" + ssid);
                }
            }
        }

        return ssid;
    }

    String getWifiApPassphrase() {
        Log.i(TAG, "getWifiApPassphrase is called.");
        String passphrase = null;
        if (mWifiManager != null) {
            final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
            // 目前先只考虑WPA2_PSK和NONE的情况
            if (config != null && !(config.getAuthType() == WifiConfiguration.KeyMgmt.NONE)) {
                passphrase = config.preSharedKey;
                if (!TextUtils.isEmpty(passphrase)) {
                    Log.i(TAG, "Wifi ap passphrase:" + passphrase);
                }
            }

        }

        return passphrase;
    }

    public static final int WIFI_AP_SECURITY_TYPE_NONE = 0;
    public static final int WIFI_AP_SECURITY_TYPE_WEP = 1;
    public static final int WIFI_AP_SECURITY_TYPE_WAP = 2;

    int getWifiApSecurityType() {
        Log.i(TAG, "getWifiApSecurityType is called.");
        int securityType = WIFI_AP_SECURITY_TYPE_NONE;
        if (mWifiManager != null) {
            // 目前先只考虑WPA2_PSK和NONE的情况
            final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
            if (config != null && !(config.getAuthType() == WifiConfiguration.KeyMgmt.NONE)) {
                securityType = WIFI_AP_SECURITY_TYPE_WAP;
                Log.i(TAG, "Wifi ap securityType:" + securityType);
            }
        }

        return securityType;
    }


    String getWifiApChannel() {
        Log.i(TAG, "getWifiApChannel is called.");
        String channel = null;

        if (mWifiManager != null) {
            final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
            if (config != null) {
                int c = config.apChannel;
                channel = String.valueOf(c);
            }

            if (!TextUtils.isEmpty(channel)) {
                Log.i(TAG, "Wifi ap channel:" + channel);
            }

        }

        return channel;
    }


    int getWifiApBand() {
        Log.i(TAG, "getWifiApBand is called.");
        int band = WifiConfiguration.AP_BAND_2GHZ;

        if (mWifiManager != null) {
            final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
            if (config != null) {
                band = config.apBand;
            }
            Log.i(TAG, "Wifi ap band:" + band);
        }

        return band;
    }

你可能感兴趣的:(Android进阶,java,android)