当前位置:首页 > 代码 > 正文

androidwifi代码(android wifi直连开发)

admin 发布:2022-12-19 19:07 143


今天给各位分享androidwifi代码的知识,其中也会对android wifi直连开发进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Android WiFi开发,如何自动连接的代码

public class WifiAutoConnectManager {

private static final String TAG = WifiAutoConnectManager.class.getSimpleName();

WifiManager wifiManager;

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

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

// 提供一个外部接口,传入要连接的无线网 public void connect(String ssid, String password, WifiCipherType type) { Thread thread = new Thread(new ConnectRunnable(ssid, password, type)); thread.start(); }

// 查看以前是否也配置过这个网络 private WifiConfiguration isExsits(String SSID) { ListWifiConfiguration 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 + "\""; // nopass if (Type == WifiCipherType.WIFICIPHER_NOPASS) { config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } // wep if (Type == WifiCipherType.WIFICIPHER_WEP) { if (!TextUtils.isEmpty(Password)) { if (isHexWepKey(Password)) { config.wepKeys[0] = Password; } else { config.wepKeys[0] = "\"" + Password + "\""; } } config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN); config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED); config.allowedKeyManagement.set(KeyMgmt.NONE); config.wepTxKeyIndex = 0; } // wpa 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.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; }

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

class ConnectRunnable implements Runnable { private String ssid;

private String password;

private WifiCipherType type;

public ConnectRunnable(String ssid, String password, WifiCipherType type) { this.ssid = ssid; this.password = password; this.type = type; }

@Override public void run() { // 打开wifi openWifi(); // 开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi // 状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句 while (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) { try { // 为了避免程序一直while循环,让它睡个100毫秒检测…… Thread.sleep(100); } catch (InterruptedException ie) { } }

WifiConfiguration wifiConfig = createWifiInfo(ssid, password, type); // if (wifiConfig == null) { Log.d(TAG, "wifiConfig is null!"); return; }

WifiConfiguration tempConfig = isExsits(ssid);

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

int netID = wifiManager.addNetwork(wifiConfig); boolean enabled = wifiManager.enableNetwork(netID, true); Log.d(TAG, "enableNetwork status enable=" + enabled); boolean connected = wifiManager.reconnect(); Log.d(TAG, "enableNetwork connected=" + connected); } }

private static boolean isHexWepKey(String wepKey) { final int len = wepKey.length();

// WEP-40, WEP-104, and some vendors using 256-bit WEP (WEP-232?) if (len != 10 len != 26 len != 58) { return false; }

return isHex(wepKey); }

private static boolean isHex(String key) { for (int i = key.length() - 1; i = 0; i--) { final char c = key.charAt(i); if (!(c = '0' c = '9' || c = 'A' c = 'F' || c = 'a' c = 'f')) { return false; } }

return true; }}

Android开发,怎么在代码里获得当前连接wifi的端口号?

首先AndroidMainfest.xml文件中添加权限: uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" / !-- 获取WIFI信息状态的权限 --

uses-permission android:name="android.permission.ACCESS_WIFI_STATE" / !-- 获取网络状态改变的权限 --

然后再activity中添加如下代码: private String getConnectWifiSsid(){

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);

WifiInfo wifiInfo = wifiManager.getConnectionInfo();

Log.d("wifiInfo", wifiInfo.toString());

Log.d("SSID",wifiInfo.getSSID());

return wifiInfo.getSSID();

}

该接口即返回当前连接的wifi的名字,也就是SSID。

在android上查看wifi状态,代码如下:

不知道你的程序报的是什么错,给你一个例子吧,不过方法和你的有点差别:

public class WifiAdmin {

/**WiFi Manager**/

private WifiManager wifimanager;

/**WiFi Information**/

private WifiInfo wifiinfo;

/**Activity NetWork List**/

private ListScanResult netlist;

/**Configured NetWork List**/

private ListWifiConfiguration connectedlist;

/**WiFi Lock**/

private WifiLock wifilock;

public WifiAdmin(Context context) {

wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

}

/**

* WiFi Operate

* */

/**Open WiFi**/

public void openWifi() {

if (!wifimanager.isWifiEnabled()) {

wifimanager.setWifiEnabled(true);

}

}

/**Close WiFi**/

public void closeWifi() {

if (wifimanager.isWifiEnabled()) {

wifimanager.setWifiEnabled(false);

}

}

/**WiFi State**/

public int checkState() {

return wifimanager.getWifiState();

}

/**

* WiFiLock Operate

* */

/**Create WiFiLock**/

public void creatWifiLock() {

wifilock = wifimanager.createWifiLock("Test");

}

/**Lock WiFi**/

public void acquireWifiLock() {

wifilock.acquire();

}

/**Clear WiFiLock**/

public void releaseWifiLock() {

if (wifilock.isHeld()) {

wifilock.release();

}

}

/**

* WiFiInfo Operate

* */

/**Get WiFiInfo**/

public WifiInfo getWifiInfo(){

wifiinfo = wifimanager.getConnectionInfo();

return wifiinfo;

}

/**

* NetWork Operate

* */

/**Scan**/

public void startScan() {

wifimanager.startScan();

netlist = wifimanager.getScanResults();

connectedlist = wifimanager.getConfiguredNetworks();

}

/**Get Configured NetWork**/

public ListWifiConfiguration getConfiguration() {

return connectedlist;

}

/**Get Activity NetWork**/

public ListScanResult getWifiList() {

return netlist;

}

/**Connect a NetWork**/

public void connectConfiguration(int index) {

if (index 0 || index connectedlist.size()) {

return;

}

wifimanager.enableNetwork(connectedlist.get(index).networkId,true);

}

/**Add a NetWork**/

public void addNetwork(WifiConfiguration wcg) {

int wcgID = wifimanager.addNetwork(wcg);

wifimanager.enableNetwork(wcgID, true);

}

/**DisConnect a NetWork**/

public void disconnectWifi(int netId) {

wifimanager.disableNetwork(netId);

wifimanager.disconnect();

}

}

Android开发如何使用代码配置手机wifi的pac地址?

这里用到的手机型号为魅族M6120,其中的具体步骤如下:

1、打开手机的设置界面,需要选择无线网络这一项。

2、在无线网络中找到已经连接的WIFI网络,并点击旁边的详情按钮。

3、会进入WIFI的详情页面,选择底部的代理设置项目。

4、等来到代理设置窗口以后,点击里面的无选项。

5、下一步,在菜单中选择手动这一项。

6、这个时候可以填写相关的服务器和端口。

7、这样一来通过点击右上角的保存按钮,即可实现Android开发使用代码配置手机wifi的pac地址。

android 给我一段代码,点击一个按钮,手机就连上指定的wifi

public class HotspotActivity extends Activity {

private WifiManager wifiManager;

private Button open;

private boolean flag=false;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//获取wifi管理服务

wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

open=(Button)findViewById(R.id.open_hotspot);

//通过按钮事件设置热点

open.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//如果是打开状态就关闭,如果是关闭就打开

flag=!flag;

setWifiApEnabled(flag);

}

});

}

// wifi热点开关

public boolean setWifiApEnabled(boolean enabled) {

if (enabled) { // disable WiFi in any case

//wifi和热点不能同时打开,所以打开热点的时候需要关闭wifi

wifiManager.setWifiEnabled(false);

}

try {

//热点的配置类

WifiConfiguration apConfig = new WifiConfiguration();

//配置热点的名称(可以在名字后面加点随机数什么的)

apConfig.SSID = "YRCCONNECTION";

//配置热点的密码

apConfig.preSharedKey="12122112";

//通过反射调用设置热点

Method method = wifiManager.getClass().getMethod(

"setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);

//返回热点打开状态

return (Boolean) method.invoke(wifiManager, apConfig, enabled);

} catch (Exception e) {

return false;

}

}

}

在人家网易博客上看到的

博主:bsky

Android 代码设置Wifi 热点密码设置的问题

netConfig.allowedKeyManagement.set(4);

//WifiConfiguration.KeyMgmt.WPA2_PSK = 4,但是不能直接拿到,所以参数直接设成4就行了

androidwifi代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于android wifi直连开发、androidwifi代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/19415.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载