您的位置:首页 > 其它

打开wifi热点以及连接wifi

2012-09-01 20:30 197 查看
添加权限

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

打开wifi热点:

package test.sam;

public class HelloanActivity extends Activity implements View.OnClickListener
{
private TextView textView = null;
private WifiManager wifiManager = null;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("HelloanActivity -> oncreate!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
setContentView(R.layout.main);
textView = (TextView)findViewById(R.id.main_TV);
findViewById(R.id.main_button).setOnClickListener(this);
}

public void onClick(View v)
{
switch (v.getId()) {
case R.id.main_button:
try {
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = "yoyo";
netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
//通过反射调用设置热点
Method method = wifiManager.getClass().getMethod(
"setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);
//返回热点打开状态
System.out.println("hotspot状态 = "+(Boolean) method.invoke(wifiManager, netConfig, true));
} catch (Exception e) {
e.printStackTrace();
}

break;
default:
break;
}
}

public String GetIpAddress() {
Enumeration<NetworkInterface> netInterfaces = null;
try {
netInterfaces = NetworkInterface.getNetworkInterfaces();
while (netInterfaces.hasMoreElements()) {
NetworkInterface ni = netInterfaces.nextElement();
System.out.println("DisplayName:" + ni.getDisplayName());
System.out.println("Name:" + ni.getName());
Enumeration<InetAddress> ips = ni.getInetAddresses();
while (ips.hasMoreElements()) {
InetAddress ip = ips.nextElement();
System.out.println(ip.getHostAddress()+"  "+ip.getHostName());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}

}


连接wifi热点:

package test.sam.helloan2;

public class Helloan2Activity extends Activity implements View.OnClickListener
{

private WifiManager wifiManager;
private StringBuilder sb;
private List<ScanResult> wifiList;
private WifiReceiver wifiReceiver;
private WifiConfiguration wifiConfiguration = null;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.main_button).setOnClickListener(this);
findViewById(R.id.main_button2).setOnClickListener(this);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiReceiver = new WifiReceiver();
registerReceiver(wifiReceiver, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiManager.startScan();
}

@Override
public void finish() {
super.finish();
unregisterReceiver(wifiReceiver);
}

@Override
public void onClick(View v)
{
switch (v.getId()) {
case R.id.main_button:
try {
System.out.println("click main button");
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"yoyo\"";
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
System.out.println("连接wifi = "+config.SSID);
int resId = wifiManager.addNetwork(config);
boolean isSucc = wifiManager.enableNetwork(resId, true);
System.out.println("isSucc = "+isSucc);
} catch (Exception e) {
e.printStackTrace();
}

break;
case R.id.main_button2:
try {
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
System.out.println("wifiInfo.getIpAddress() = "+wifiInfo.getIpAddress());
getLocalIpAddress();
} catch (Exception e) {
e.printStackTrace();
}

break;
default:
break;
}
}

public  String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
System.out.println(inetAddress);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}

private final class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(wifiList == null)
{
List<WifiConfiguration> configurations = wifiManager.getConfiguredNetworks();
for(WifiConfiguration configuration:configurations)
{
System.out.println("configuration.SSID = "+configuration.SSID);
if(configuration.SSID.contains("samyoyo"));
{
wifiConfiguration = configuration;
break;
}
}

}else {
System.out.println("get wifi!!");
}

}
}

}


网上看见别人封装了一个比较好的例子:(http://www.eoeandroid.com/thread-195120-1-1.html

public class WifiConnect {

WifiManager wifiManager;

// 定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况
public enum WifiCipherType {
WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID
}

// 构造函数
public WifiConnect(WifiManager wifiManager) {
this.wifiManager = wifiManager;
}

// 打开wifi功能
private boolean OpenWifi() {
boolean bRet = true;
if (!wifiManager.isWifiEnabled()) {
bRet = wifiManager.setWifiEnabled(true);
}
return bRet;
}

// 提供一个外部接口,传入要连接的无线网
public boolean Connect(String SSID, String Password, WifiCipherType Type) {
if (!this.OpenWifi()) {
return false;
}

while (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) {
try {
Thread.currentThread();
Thread.sleep(100);
} catch (InterruptedException ie) {
}
}

WifiConfiguration wifiConfig = this
.CreateWifiInfo(SSID, Password, Type);
//
if (wifiConfig == null) {
return false;
}

WifiConfiguration tempConfig = this.IsExsits(SSID);

if (tempConfig != null) {
wifiManager.removeNetwork(tempConfig.networkId);
}

int netID = wifiManager.addNetwork(wifiConfig);
boolean bRet = wifiManager.enableNetwork(netID, false);
return bRet;
}

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

private WifiConfiguration CreateWifiInfo(String SSID, String Password,
WifiCipherType Type) {
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + SSID + "\"";
if (Type == WifiCipherType.WIFICIPHER_NOPASS) {
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
}
if (Type == WifiCipherType.WIFICIPHER_WEP) {
config.preSharedKey = "\"" + Password + "\"";
config.hiddenSSID = true;
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 == WifiCipherType.WIFICIPHER_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.status = WifiConfiguration.Status.ENABLED;
} else {
return null;
}
return config;
}

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