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

android -wifi热点设置问题

2016-07-29 18:24 344 查看
package com.zyl.swsettingschild;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import com.zyl.Zylsettings.R;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.Context;

import android.net.wifi.WifiConfiguration;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.widget.CheckBox;

import android.widget.CompoundButton;

import android.widget.RelativeLayout;

import android.widget.TextView;

import android.widget.Toast;

import android.widget.CompoundButton.OnCheckedChangeListener;

public class SetWifiHotActivity extends Activity{

    WifiManager wifiManager;

    RelativeLayout mHotSwitchLayout ;

    RelativeLayout mHotSetLayout ;

    CheckBox mHotSwitch ;

    TextView mHotset_name;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.wifihotsetting);    

        wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);

        initView();

        initcontent();

         initListener();

         

    }

    private void initView() {

        // TODO Auto-generated method stub

         mHotSwitchLayout = (RelativeLayout)findViewById(R.id.hotswitch);

         mHotSetLayout = (RelativeLayout)findViewById(R.id.hotset);

         mHotSwitch = (CheckBox)findViewById(R.id.mhotswitch);

         mHotset_name = (TextView)findViewById(R.id.hotset_name);

    }

    private void initListener() {

        // TODO Auto-generated method stub

          OnCheckedChangeListener mSwitchListener = new OnCheckedChangeListener() {

                

                @SuppressLint("ShowToast")

                @Override

                public void onCheckedChanged(CompoundButton buttonView,

                        boolean isChecked) {

                    // TODO Auto-generated method stub

                    if (isChecked) {

                        isStartWifiAp();

                    } else {

                        closeWifiAp();

                    }

                }

            };

            mHotSwitch.setOnCheckedChangeListener(mSwitchListener);

    }

    private void initcontent() {

        // TODO Auto-generated method stub

        mHotSwitch.setChecked(isWifiApEnabled());    

        setWifiSSIDAndKey();

    }

    public void setWifiSSIDAndKey(){

        String SSID = "\" T  E S T \"";

        String preSharedKey = "\"11111111\"";

        mHotset_name.setText("设置wifi热点"+"(名称:"+SSID+";密码:"+preSharedKey+")");

    }

    public enum WIFI_AP_STATE {  

        WIFI_AP_STATE_DISABLING, WIFI_AP_STATE_DISABLED, WIFI_AP_STATE_ENABLING,  WIFI_AP_STATE_ENABLED, WIFI_AP_STATE_FAILED  

    }

    private WIFI_AP_STATE getWifiApState(){  

        int mtmpState;  

        try {  

            Method method = wifiManager.getClass().getMethod("getWifiApState");  

            mtmpState = ((Integer) method.invoke(wifiManager));  

            // Fix for Android 4  

            if (mtmpState > 10) {  

                mtmpState = mtmpState - 10;  

            }  

            return WIFI_AP_STATE.class.getEnumConstants()[mtmpState];  

        } catch (Exception e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

            return WIFI_AP_STATE.WIFI_AP_STATE_FAILED;  

        }  

    }

    /**Analyzing turned hot*/  

    public boolean isWifiApEnabled() {  

        return getWifiApState() == WIFI_AP_STATE.WIFI_AP_STATE_ENABLED;  

    }  

    public void isStartWifiAp(){

        wifiManager.setWifiEnabled(false);

        stratWifiAp();

    }

    public void stratWifiAp() {  

        Method method1 = null;  

        try {  

            method1 = wifiManager.getClass().getMethod("setWifiApEnabled",  

                    WifiConfiguration.class, boolean.class);  

            WifiConfiguration netConfig = new WifiConfiguration();  

            //wifi hot name

            netConfig.SSID = "\" T  E S T \"";  

            netConfig.allowedAuthAlgorithms  

                    .set(WifiConfiguration.AuthAlgorithm.OPEN);  

            netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);  

            netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);  

            netConfig.allowedKeyManagement  

                    .set(WifiConfiguration.KeyMgmt.WPA_PSK);  

            netConfig.allowedPairwiseCiphers  

                    .set(WifiConfiguration.PairwiseCipher.CCMP);  

            netConfig.allowedPairwiseCiphers  

                    .set(WifiConfiguration.PairwiseCipher.TKIP);  

            netConfig.allowedGroupCiphers  

                    .set(WifiConfiguration.GroupCipher.CCMP);  

            netConfig.allowedGroupCiphers  

                    .set(WifiConfiguration.GroupCipher.TKIP);  

            

            netConfig.preSharedKey = "\"11111111\"";  

            method1.invoke(wifiManager, netConfig, true);  

 

        } catch (IllegalArgumentException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        } catch (IllegalAccessException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        } catch (InvocationTargetException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        } catch (SecurityException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        } catch (NoSuchMethodException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        }  

    }

     public void closeWifiAp() {  

        try {  

              Method method = wifiManager.getClass().getMethod("getWifiApConfiguration");  

              method.setAccessible(true);  

              WifiConfiguration config = (WifiConfiguration) method.invoke(wifiManager);  

              Method method2 = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);  

              method2.invoke(wifiManager, config, false);  

            } catch (NoSuchMethodException e) {  

              e.printStackTrace();  

            } catch (IllegalArgumentException e) {  

              e.printStackTrace();  

            } catch (IllegalAccessException e) {  

              e.printStackTrace();  

            } catch (InvocationTargetException e) {  

              e.printStackTrace();  

            }  

     }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android