Android接続指定WifiのDemo

9466 ワード

アプリはSSIDとパスワードに対応しています。接続はWIFIを指定します。
Demoダウンロードアドレスhttp://download.csdn.net/detail/ericfantastic/9092739
1、MainActivity.javaはツール類WifiAdminを含む。
package com.example.connectwifi;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
import android.os.Bundle;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		WifiAdmin wa = new WifiAdmin(this);
		wa.openWifi();
		wa.addNetwork(wa.CreateWifiInfo("CMM-687", "11223344", 3));
	}

	public class WifiAdmin { 
	    //   WifiManager    
	    private WifiManager mWifiManager; 
	    //   WifiInfo    
	    private WifiInfo mWifiInfo; 
	    //             
	    private List<ScanResult> mWifiList; 
	    //         
	    private List<WifiConfiguration> mWifiConfiguration; 
	    //     WifiLock  
	    WifiLock mWifiLock; 

	 
	    //      
	    public WifiAdmin(Context context) { 
	        //   WifiManager    
	        mWifiManager = (WifiManager) context 
	                .getSystemService(Context.WIFI_SERVICE); 
	        //   WifiInfo    
	        mWifiInfo = mWifiManager.getConnectionInfo(); 
	    } 
	 
	    //   WIFI  
	    public void openWifi() { 
	        if (!mWifiManager.isWifiEnabled()) { 
	            mWifiManager.setWifiEnabled(true); 
	        } 
	    } 
	 
	    //   WIFI  
	    public void closeWifi() { 
	        if (mWifiManager.isWifiEnabled()) { 
	            mWifiManager.setWifiEnabled(false); 
	        } 
	    } 
	 
	    //     WIFI    
	    public int checkState() { 
	        return mWifiManager.getWifiState(); 
	    } 
	 
	    //   WifiLock  
	    public void acquireWifiLock() { 
	        mWifiLock.acquire(); 
	    } 
	 
	    //   WifiLock  
	    public void releaseWifiLock() { 
	        //         
	        if (mWifiLock.isHeld()) { 
	            mWifiLock.acquire(); 
	        } 
	    } 
	 
	    //     WifiLock  
	    public void creatWifiLock() { 
	        mWifiLock = mWifiManager.createWifiLock("Test"); 
	    } 
	 
	    //           
	    public List<WifiConfiguration> getConfiguration() { 
	        return mWifiConfiguration; 
	    } 
	 
	    //               
	    public void connectConfiguration(int index) { 
	        //                 
	        if (index > mWifiConfiguration.size()) { 
	            return; 
	        } 
	        //         ID     
	        mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, 
	                true); 
	    } 
	 
	    public void startScan() { 
	        mWifiManager.startScan(); 
	        //         
	        mWifiList = mWifiManager.getScanResults(); 
	        //             
	        mWifiConfiguration = mWifiManager.getConfiguredNetworks(); 
	    } 
	 
	    //         
	    public List<ScanResult> getWifiList() { 
	        return mWifiList; 
	    } 
	 
	    //         
	    public StringBuilder lookUpScan() { 
	        StringBuilder stringBuilder = new StringBuilder(); 
	        for (int i = 0; i < mWifiList.size(); i++) { 
	            stringBuilder 
	                    .append("Index_" + new Integer(i + 1).toString() + ":"); 
	            //  ScanResult             
	            //      :BSSID、SSID、capabilities、frequency、level  
	            stringBuilder.append((mWifiList.get(i)).toString()); 
	            stringBuilder.append("/n"); 
	        } 
	        return stringBuilder; 
	    }
	 
	    //   MAC    
	    public String getMacAddress() { 
	        return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress(); 
	    } 
	 
	    //       BSSID  
	    public String getBSSID() { 
	        return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID(); 
	    } 
	 
	    //   IP    
	    public int getIPAddress() { 
	        return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress(); 
	    } 
	 
	    //      ID  
	    public int getNetworkId() { 
	        return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId(); 
	    } 
	 
	    //   WifiInfo        
	    public String getWifiInfo() { 
	        return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString(); 
	    } 
	 
	    //            
	    public void addNetwork(WifiConfiguration wcg) { 
		 int wcgID = mWifiManager.addNetwork(wcg); 
	     boolean b =  mWifiManager.enableNetwork(wcgID, true); 
	     System.out.println("a--" + wcgID);
	     System.out.println("b--" + b);
	    } 
	 
	    //     ID     
	    public void disconnectWifi(int netId) { 
	        mWifiManager.disableNetwork(netId); 
	        mWifiManager.disconnect(); 
	    } 
	 
	//           ,           :
	 
	    public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type) 
	    { 
	          WifiConfiguration config = new WifiConfiguration();   
	           config.allowedAuthAlgorithms.clear(); 
	           config.allowedGroupCiphers.clear(); 
	           config.allowedKeyManagement.clear(); 
	           config.allowedPairwiseCiphers.clear(); 
	           config.allowedProtocols.clear(); 
	          config.SSID = "\"" + SSID + "\"";   
	          
	          WifiConfiguration tempConfig = this.IsExsits(SSID);           
	          if(tempConfig != null) {  
	        	  mWifiManager.removeNetwork(tempConfig.networkId);  
	          }
	          
	          if(Type == 1) //       
	          { 
	               config.wepKeys[0] = ""; 
	               config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
	               config.wepTxKeyIndex = 0; 
	          } 
	          if(Type == 2) //WEP     
	          { 
	              config.hiddenSSID = true;
	              config.wepKeys[0]= "\""+Password+"\""; 
	              config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); 
	              config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
	              config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
	              config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
	              config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); 
	              config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
	              config.wepTxKeyIndex = 0; 
	          } 
	          if(Type == 3) //WPA     
	          { 
	          config.preSharedKey = "\""+Password+"\""; 
	          config.hiddenSSID = true;   
	          config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);   
	          config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);                         
	          config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);                         
	          config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);                    
	          //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);  
	          config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
	          config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
	          config.status = WifiConfiguration.Status.ENABLED;   
	          }
	           return config; 
	    } 
	    
	    private WifiConfiguration IsExsits(String SSID)  
	    {  
	        List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();  
	           for (WifiConfiguration existingConfig : existingConfigs)   
	           {  
	             if (existingConfig.SSID.equals("\""+SSID+"\""))  
	             {  
	                 return existingConfig;  
	             }  
	           }  
	        return null;   
	    }
	  
	}
	
}
2、Manifest.xmlに対応権限を追加する
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.connectwifi"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="14" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
</manifest>