wifi

几个类:
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiConfiguration;

WIFI网卡的状态:
1.WIFI_STATE_DISABLED : WIFI网卡不可用(1)
2.WIFI_STATE_DISABLING : WIFI网卡正在关闭(0)
3.WIFI_STATE_ENABLED : WIFI网卡可用(3)4.WIFI_STATE_ENABLING : WIFI网正在打开(2) (WIFI启动需要一段时间)
5.WIFI_STATE_UNKNOWN : 未知网卡状态

WifiInfo:
getBSSID() 获取BSSID
getDetailedStateOf() 获取客户端的连通性
getHiddenSSID() 获得SSID 是否被隐藏
getIpAddress() 获取IP 地址
getLinkSpeed() 获得连接的速度
getMacAddress() 获得Mac 地址
getRssi() 获得802.11n 网络的信号
getSSID() 获得SSID
getSupplicanState() 返回具体客户端状态的信息

需要权限:

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>  
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  
package com.pax.network;

import android.app.Activity;
import android.os.Bundle;
import android.os.Message;
import android.os.SystemClock;
import android.widget.Button;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiConfiguration;
import android.net.NetworkInfo.State;
import android.net.ConnectivityManager;
import android.os.Handler;
import android.util.Log;
import android.content.Context;

import java.util.List;

public class wifi extends Activity implements OnClickListener{

    private Button openWifi = null;
    private Button closeWifi = null;
    private Button wifiStatus = null;
    private Button connectWifi = null;
    private final static String TAG = "wifi";
    private List<ScanResult> wifiList= null;
    private WifiManager wifiManager = null;
    private WifiInfo WifiInfo = null;
    private WifiConfiguration wifiConfiguration = null;

    private final static int OPENWIFISUCCESS = 0;
    private final static int CLOSEWIFISUCCESS = 1;
    private final static int CONNECTED = 2;
    private final static int DISABLING = 3;//正在关闭
    private final static int ENABLING = 4;//正在打开
    private final static int NOEXIST = 5;//D800不存在
    private final static String SSID = "D800Test";
    private final static String PASSWORD = "1234567890";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.wifi);
        initView();
        wifiManager = (WifiManager)wifi.this.getSystemService(WIFI_SERVICE);

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }

    private void initView(){
        openWifi = (Button)findViewById(R.id.btOpenWifi);
        connectWifi = (Button)findViewById(R.id.btConnectWifi);
        closeWifi = (Button)findViewById(R.id.btCloseWifi);
        wifiStatus = (Button)findViewById(R.id.btWifiStatus);
        openWifi.setOnClickListener(this);
        connectWifi.setOnClickListener(this);
        closeWifi.setOnClickListener(this);
        wifiStatus.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        // TODO Auto-generated method stub
        switch(view.getId()){
            case R.id.btOpenWifi:
                openWifi();
                break;
            case R.id.btConnectWifi:
                connectWifi();  
                break;
            case R.id.btCloseWifi:
                closeWifi();
                break;
            case R.id.btWifiStatus:
                int status = getWifiState();
                Log.e(TAG,"status = "+status);
                if(status == WifiManager.WIFI_STATE_DISABLED){
                    handler.sendEmptyMessage(CLOSEWIFISUCCESS);
                }else if(status == WifiManager.WIFI_STATE_DISABLING){
                    handler.sendEmptyMessage(DISABLING);
                }else if(status == WifiManager.WIFI_STATE_ENABLING){
                    handler.sendEmptyMessage(ENABLING);
                }else if(status == WifiManager.WIFI_STATE_ENABLED){
                    handler.sendEmptyMessage(OPENWIFISUCCESS);
                }
                break;
            default:
                break;
        }
    }

    private void openWifi(){
        if(!wifiManager.isWifiEnabled()){
            wifiManager.setWifiEnabled(true);
            while(wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED){
                try {
                    Thread.sleep(100);
                } catch (InterruptedException ie) {}
            }
        }
    }

    private void closeWifi(){
        if(wifiManager.isWifiEnabled()){
            wifiManager.setWifiEnabled(false);
        }
    }

    private void connectWifi(){
        int i,netId;
        WifiConfiguration wconfig = null;

        wifiManager.startScan();
        wifiList = wifiManager.getScanResults();
        try {
            Thread.sleep(100);
        } catch (InterruptedException ie) {}

        Log.e(TAG,"size = "+wifiList.size());
        for(i = 0; i < wifiList.size(); i++){
            ScanResult scanRet = wifiList.get(i);
            Log.e(TAG,"ssid = "+scanRet.SSID.toString());
            if(scanRet.SSID.equals(SSID)){
                Log.e(TAG,"D800 exist");
                wconfig = isExsits(SSID);
                if(wconfig == null){
                    wconfig = new WifiConfiguration();
                    wconfig.allowedAuthAlgorithms.clear();
                    wconfig.allowedGroupCiphers.clear();
                    wconfig.allowedKeyManagement.clear();
                    wconfig.allowedPairwiseCiphers.clear();
                    wconfig.allowedProtocols.clear();
                    wconfig.SSID = "\"" + scanRet.SSID + "\"";
                    wconfig.preSharedKey = "\"" + PASSWORD + "\"";
                    wconfig.hiddenSSID = true;
                    wconfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
                    wconfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
                    wconfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
                    wconfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
    //              wconfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
                    wconfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
                    wconfig.allowedPairwiseCiphers
                            .set(WifiConfiguration.PairwiseCipher.CCMP);
                    wconfig.status = WifiConfiguration.Status.ENABLED;
                }else{
                    Log.e(TAG,"connect again");
                }
                netId = wifiManager.addNetwork(wconfig);
                wifiManager.enableNetwork(netId, true);

                while(true){
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    ConnectivityManager connM = (ConnectivityManager)wifi.this.getSystemService(CONNECTIVITY_SERVICE);
                    State state = connM.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
                    if (State.CONNECTED == state) {
                        try {
                            Thread.sleep(500);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        break;
                    }
                }
                Toast.makeText(wifi.this, "connect D800 success", Toast.LENGTH_LONG).show();
                break;
            }else if(i == wifiList.size()){
                handler.sendEmptyMessage(NOEXIST);
            }
        }
    }

    // 查看以前是否也配置过这个网络
    private WifiConfiguration isExsits(String SSID) {
        List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks();
        for (WifiConfiguration existingConfig : existingConfigs) {
            if (existingConfig.SSID.equals("\"" + SSID + "\"")) {
            return existingConfig;
            }
        }
        return null;
    }

    private List<ScanResult> getWifilist(){

        return wifiList;
    }

    private int getWifiState(){
        return wifiManager.getWifiState();
    }

    Handler handler = new Handler(){

        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            switch(msg.what){
                case 0:
                    Toast.makeText(wifi.this, "open wifi success", Toast.LENGTH_SHORT).show();  
                    break;
                case 1:
                    Toast.makeText(wifi.this, "close wifi success", Toast.LENGTH_SHORT).show();  
                    break;  
                case 2:
                    Toast.makeText(wifi.this, "connect wifi success", Toast.LENGTH_SHORT).show();  
                    break;
                case 3:
                    Toast.makeText(wifi.this, "closing wifi", Toast.LENGTH_SHORT).show();  
                    break;
                case 4:
                    Toast.makeText(wifi.this, "openning wifi", Toast.LENGTH_SHORT).show();  
                    break;
                case 5:
                    Toast.makeText(wifi.this, "D800 not exist", Toast.LENGTH_SHORT).show();  
                    break;
                default:
                    break;
            }

        }
    };

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值