android4.4自己動手連線wifi熱點以及建立wifi熱點
阿新 • • 發佈:2019-01-04
package com.kaka.connector;
import java.util.List;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.net.wifi.ScanResult;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.util.Log;
public class ConnectActivity extends Activity {
private List<ScanResult> wifiList;
private WifiManager wifiManager;
private List<String> passableHotsPot;
private WifiReceiver wifiReceiver;
private boolean isConnected=false;
private Button connect;
final private String TAG = "XINGSHI";
/* 監聽熱點變化 */
private final class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.e(TAG, "onReceive..........\n");
wifiList = wifiManager.getScanResults();
if (wifiList == null || wifiList.size() == 0 || isConnected) return;
onReceiveNewNetworks(wifiList);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
wifiReceiver = new WifiReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
registerReceiver(wifiReceiver, filter);
init();
}
/* 初始化引數 */
public void init() {
Log.e(TAG, "init..........\n");
setContentView(R.layout.activity_connect);
connect=(Button)findViewById(R.id.connect);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
//通過按鈕事件搜尋熱點
connect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wifiManager.startScan();
}
});
}
/*當搜尋到新的wifi熱點時判斷該熱點是否符合規格*/
public void onReceiveNewNetworks(List<ScanResult> wifiList){
Log.e(TAG, "onReceiveNewNetwork..........\n");
passableHotsPot=new ArrayList<String>();
for(ScanResult result:wifiList){
Log.e(TAG, "" + result.SSID);
if((result.SSID).contains("vinci"))
passableHotsPot.add(result.SSID);
} synchronized (this) {
connectToHotpot();
}
}
/*連線到熱點*/
public void connectToHotpot(){
Log.e(TAG, "connectToHotpot..........\n");
if(passableHotsPot==null || passableHotsPot.size()==0) return;
WifiConfiguration wifiConfig=this.setWifiParams(passableHotsPot.get(0));
int wcgID = wifiManager.addNetwork(wifiConfig);
boolean flag=wifiManager.enableNetwork(wcgID, true);
isConnected=flag;
Log.e(TAG, "connect success? "+flag);
}
/*設定要連線的熱點的引數*/
public WifiConfiguration setWifiParams(String ssid){
WifiConfiguration apConfig=new WifiConfiguration();
apConfig.SSID="\""+ssid+"\"";
apConfig.preSharedKey="\"inspero2014\"";
apConfig.hiddenSSID = true;
apConfig.status = WifiConfiguration.Status.ENABLED;
apConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
apConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
apConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
apConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
apConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
apConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
return apConfig;
}
@Override
protected void onDestroy() {
super.onDestroy();
/*銷燬時登出廣播*/
unregisterReceiver(wifiReceiver);
}
}
import java.util.List;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.net.wifi.ScanResult;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.util.Log;
public class ConnectActivity extends Activity {
private List<ScanResult> wifiList;
private WifiManager wifiManager;
private List<String> passableHotsPot;
private WifiReceiver wifiReceiver;
private boolean isConnected=false;
private Button connect;
final private String TAG = "XINGSHI";
/* 監聽熱點變化 */
private final class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.e(TAG, "onReceive..........\n");
wifiList = wifiManager.getScanResults();
if (wifiList == null || wifiList.size() == 0 || isConnected) return;
onReceiveNewNetworks(wifiList);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
wifiReceiver = new WifiReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
registerReceiver(wifiReceiver, filter);
init();
}
/* 初始化引數 */
public void init() {
Log.e(TAG, "init..........\n");
setContentView(R.layout.activity_connect);
connect=(Button)findViewById(R.id.connect);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
//通過按鈕事件搜尋熱點
connect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wifiManager.startScan();
}
});
}
/*當搜尋到新的wifi熱點時判斷該熱點是否符合規格*/
public void onReceiveNewNetworks(List<ScanResult> wifiList){
Log.e(TAG, "onReceiveNewNetwork..........\n");
passableHotsPot=new ArrayList<String>();
for(ScanResult result:wifiList){
Log.e(TAG, "" + result.SSID);
if((result.SSID).contains("vinci"))
passableHotsPot.add(result.SSID);
} synchronized (this) {
connectToHotpot();
}
}
/*連線到熱點*/
public void connectToHotpot(){
Log.e(TAG, "connectToHotpot..........\n");
if(passableHotsPot==null || passableHotsPot.size()==0) return;
WifiConfiguration wifiConfig=this.setWifiParams(passableHotsPot.get(0));
int wcgID = wifiManager.addNetwork(wifiConfig);
boolean flag=wifiManager.enableNetwork(wcgID, true);
isConnected=flag;
Log.e(TAG, "connect success? "+flag);
}
/*設定要連線的熱點的引數*/
public WifiConfiguration setWifiParams(String ssid){
WifiConfiguration apConfig=new WifiConfiguration();
apConfig.SSID="\""+ssid+"\"";
apConfig.preSharedKey="\"inspero2014\"";
apConfig.hiddenSSID = true;
apConfig.status = WifiConfiguration.Status.ENABLED;
apConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
apConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
apConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
apConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
apConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
apConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
return apConfig;
}
@Override
protected void onDestroy() {
super.onDestroy();
/*銷燬時登出廣播*/
unregisterReceiver(wifiReceiver);
}
}