`

Wifi

 
阅读更多
. Confirm if Wifi is On
Using isEnabled() in WifiManager.
If not, use setEnabled(true) to turn on it.
Note:
May take some time, suggest to wait 1~3 seconds.

2. Scan AP
Using scanAP() in WifiManager
The result will not reply immediately,
so we set a receiver to receive the result latter.
The receiver should extend from BroadcastReceiver to receive the broadcast message.
Ex:
if( wifiManager.startScan()){
IntentFilter inf = new IntentFilter();
inf.addAction(WifiManager.SCAN_RESULT_AVAILABLE_ACTION);
registerReceiver(new WifiResultManager(), inf);
}

class WifiResultManager extends BroadcastReceiver{
public WifiResultManager(){
}

public void onReceive(Context cxt, Intent it){
//Do something
}
}


3. Connect to AP
Using WifiConfiguration to set the specified settings.
(1) If a password is needed, you should set to string wepKeys[i] (i=1~3).
If the password only contains 0-9A-Fa-f (Hex), you can just put the password to the string,
but if it have ascii codes, you should add additional \" to both side of the string.
(Ex: if password="wifimanager00", you should save as "\"wifimanager00\"")

(2) Set the BSSID but SSID.
Note:
I don't know why it's not work after I set the SSID.

(3) Choose the correct settings.
For example, you can set it for open network.
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
conf.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
conf.status=WifiConfiguration.Status.ENABLED;

then add it to manager and enable it.
conf.networkId = manager.addNetwork(conf);
//At this part, you can check the existing network to update it by using updateNetwork();
//Simplely, just add a new one.
manager.enableNetwork(conf.networkId, true);

After you done these works,
you will find that, yes, the connection is established, but no ip address.
This is because it will take some time to get the IP Address from AP.
You can add another receiver to listen the NETWORK_STATE_CHANGED_ACTION message.
In general, it may take 3~10 seconds to get the correct IP Address.

Now, you can use it. Have fun to your Java.




mScanResult.capabilities的几个参数的含义:
capabilities=[WPA2-PSK-CCMP]
capabilities=[WPA-PSK-TKIP]
意思是:
认证类型:WPA-PSK 和 WPA2-PSK
加密算法:TKIP 和 AES,CCMP
Describes the authentication, key management, and encryption schemes supported by the access point. (就是路由器支持的认证类型, key管理类型以及加密协议)

获取本台手机的wifi网卡ip
	public String getIpAddress(){
		String ip = null;
		if(mWifiInfo!=null){
			ip =  int2Ip(mWifiInfo.getIpAddress());
		}
		return ip;
	}
	
	private String int2Ip(int i) {     
	    
		   return ((i >> 24 ) & 0xFF ) + "." +     
		               ((i >> 16 ) & 0xFF) + "." +     
		               ((i >> 8 ) & 0xFF) + "." +     
		               ( i & 0xFF) ;     
	}    



SSID指AP设备名称,BSSID指AP设备的MAC地址

android连接加密网络,其中 一个netId对应一个config,所以只要有netId就可以连接网络
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
        boolean bRet1 = wifiManager.setWifiEnabled(true);
        
        //add network
        if (wifiManager.startScan())    //扫描可用的无线网络
        {
        List<ScanResult> scanResultList = wifiManager.getScanResults();
        for (int i = 0; i < scanResultList.size(); i++)
        {
            ScanResult scanRet = scanResultList.get(i);
            if (scanRet.SSID.equalsIgnoreCase("TEST"))   //找到 TEST
            {
                WifiConfiguration config = new WifiConfiguration();

                config.SSID = "\"" + scanRet.SSID + "\"";
                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;
                 
                int netID = wifiManager.addNetwork(config);
                Log.d("WifiPreference", "add Network returned " + netID );
                boolean bRet = wifiManager.enableNetwork(netID, true);
                Log.d("WifiPreference", "enableNetwork returned " + bRet );
            }
        }
        }



分享到:
评论

相关推荐

    以太网(局域网) 和 4Gwifi共存,并可以切换使用4G和wifi网络,另外还可以切换以太网和4gwifi的网络优先级

    1.同时连接网线(局域网),4g,wifi; 2.局域网一直保持畅通, 4G和wifi同时连接时,使用wifi网络;wifi关闭时使用4G网络;4G关闭时,使用wifi网络;可以来回切换. 3.设置--显示中加入了切换以太网和wifi网络优先级开关. 4....

    破解wifi密码软件手机版 幻影WIFI V2 991 最新安卓版

    幻影WIFI是最好用的智能手机WiFi管理工具。所有的热点信息基于云端数据库,内置全国百万WiFi热点数据,随时随地轻松接入无线网络,最大化使用各种联网的移动服务,扫除无网断网的状态,尤其适合商务人群、移动人群和...

    海豚音wifi V3.7.8最新版

    海豚音Wi-Fi是一款纯软件的广告路由器,是实体店WiFi商业和微网站入口,可以让普通路由器变为WiFi广告路由器! 支持微信、手机短信、邮件等二次营销!独家微信一键关注、分享朋友圈上网!帮助店家轻松实现吸粉、加粉...

    网吧wifi营销-客户端

    你的网吧也想要wifi覆盖,wifi广告认证,wifi广告营销,wifi密码开机获取,关机自动断网吗...Wifi广告营销,wifi广告路由,微信关注加粉丝神器,无线广告路由,这里应有尽有。 http://wifi.212.net.cn QQ:714060266 】

    WIFI营销小程序源码.rar

    WIFI营销小程序 主要功能: 生成一键链接WIFI码 WIFI截流 用户申请为商家:顾客扫码链接WIFI可得收益,适用于餐饮酒吧等场所。 用户申请为团长:可以地推发展商家,永久的分成。 三级分销,具体看后台。WIFI...

    WiFi以太网络共存补丁.rar

    有两种情况的网络共存以WiFi以太网为例: 1. 当WiFi与以太网都连接上时,优先使用网络优先级更高的网络,会断开优先级低的网络  1.1 Android 4.4 (会优先使用WiFi),可通过以下修改补丁优先使用以太网   android...

    手机WiFi自动切换

    不知道各位有没有这样的经历,一个地方的wifi信号比较多,但是有强有弱,手机往往是自动连接的,可能不是最适合自己的那个信号,所以需要自己手动选择较强一点的,而当自己稍微走到不远的另一个地方时该手动选择的又...

    wifi密码弱口令字典(使用频率最高)

    作为普通大众,增强Wifi安全性其实也是比较简单的。一是一定要修改Wifi管理后台的密码,二是最好能关注Wifi固件升级信息。 前些日子,一位程序员改了一个Telnet Wifi扫描脚本,经过两三天的扫描,积累了9万余条Wifi...

    基于CSI的WIFI环境感知技术资料

    室内定位是基于位置服务研究的关键问题,WIFI 作为一种廉价易得的信号源被广泛应用在室内定位系统中。但是室内复杂环境造成同一点处的WIFI 接收信号强度随时间变化范围较大,影响了基于WIFI 接收信号强度的室内定位...

    Android系统中Wifi连接网络的源代码

    Wifi连接网络,通过程序你将了解到定义WifiManager对象,定义WifiInfo对象,获取网络连接列表,定义一个WifiLock,打开Wifi网卡,关闭Wifi网卡,检查当前Wifi网卡状态,扫描周边网络,每次点击扫描之前清空上一次的...

    wifi

    wifi

    树莓派wifi通过python程序控制

    可以通过程序取扫描周围的wifi,进行连接和断开: # 3、扫描wifi: def scan_wifi(self): wifi = pywifi.PyWiFi() iface = wifi.interfaces()[1] iface.scan() time.sleep(0.5) basewifi = iface.scan_...

    Wifi扫描显示;设置连接到指定WiFi;获取WiFi历史连接记录密码

    一个Android连接WiFi设置的例子,可以显示WiFi列表,设置连接指定的WIFI,查看已保存wifi的密码(需要root权限),连接上wifi的详细信息:本机IP,本机MAC,网关,DNS,网卡接口名等信息。 之前上传过的DEMO:后来...

    用于管理 wifi(连接、扫描)的 NodeJS 工具_JavaScript_代码_下载

    node-wifi 模块允许 macOS、windows 和 linux 用户通过各种方法与周围的 wifi 网络进行交互。这些方法包括扫描 wifi 接入点并连接到这些接入点。 特征 Linux 苹果电脑 视窗 连接 ✓ ✓ ✓ 扫描 ✓ ✓ ✓ 列出当前的...

    160wifi(电脑Wifi共享软件)官方中文版V1111_4.3.10.20 | 160wifi电脑版怎么用 | 电脑wifi共享软件哪个好用

    160WiFi是一款来自驱动精灵旗下开发的一款免费、安全、可靠的WiFi共享软件,功能类似WiFi共享精灵、360Wifi、猎豹WiFi等Wifi共享软件,无需任何专业知识就可以一键让用户的电脑变身为Wi-Fi热点,让电脑华丽变身无线...

    wifi共享,扫码连接,码上wifi

    wifi共享,扫码连接,码上wifi,共享WIFI项目收益来自第三方广告平台,系统会根据广告素材的定向或用户画像,匹配当前合适的广告展示给用户,不同用户展示的广告也不同,广告价格收益也不同。用户到线下实体商家消费...

    Android例子源码自动连接已经配置好的指定的wifi的简单例子

    本项目是一个实现自动连接指定的wifi的功能,可以检测要连接的wifi是否在可连接范围内,若在可连接范围内,则进行连接;否则提醒用户,程序结束。注意:此处要连接的wifi是已经配置好的,就是之前已经连接过的。程序...

    实验五 WIFI无线通信系统实验.docx

    按照WiFi模块1脚GND连接开发板的地,WiFi模块5脚,3.3V连接开发板的3.3V,WiFi模块4脚,RXD连接开发板的TXD,WiFi模块8脚,TXD连接开发板的RXD。 2、通过串口调试程序“XCOM V2.0”发送AT命令和接收信息。利用...

    C# 使用ManagedWifi连有密码的WIFI

    C# 使用ManagedWifi连有密码的WIFI,功能包括WIFI扫描和连接。全部源代码,vs2008工程,...WlanInterface接口的3个event都注册了,可以通过event回调函数得到当前的WIFI连接过程和最终的连接结果(连接成功或者失败)。

    160WiFi无线路由v4.1.7.12中文绿色免安装版

    160WiFi绿色免安装版,基于160WiFi无线路由软件官方版精简制作,已初始化程序即运行程序不弹新特性窗口,屏蔽菜单新特性、官网、关于等按钮链接 160WiFi是一款免费的无线路由软件,可以将您笔记本(或台式机)的内置...

Global site tag (gtag.js) - Google Analytics