`
haouziwefe
  • 浏览: 126889 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

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 );
            }
        }
        }




 
0
3
分享到:
评论

相关推荐

    Android 连接wifi和创建WIFI热点 demo

    在Android平台上,连接WiFi和创建WiFi热点是两个重要的网络功能,尤其对于移动设备而言,它们在日常生活和工作中扮演着至关重要的角色。这个“Android 连接WiFi和创建WIFI热点 demo”应该是一个示例项目,它展示了...

    wifi直连,WiFi p2p 转发 源码+apk

    **WiFi直连技术详解** WiFi Direct,又称为WIFI P2P,是一种允许设备之间无需通过无线路由器直接建立连接的技术。这项技术在Android系统中得到了广泛的应用,使得Android设备能够快速、便捷地进行数据传输、设备...

    Unity WiFi控制Easy WiFi Controller v1.95

    Unity WiFi控制器是一个在Unity游戏引擎环境下使用的插件,主要用于实现对设备WiFi功能的控制。Easy WiFi Controller v1.95是这个插件的特定版本,它提供了方便的API和界面,使得开发者能够在游戏或应用程序中集成...

    公司电脑禁止随身wifi、禁用360随身wifi的方法

    【标题】: "公司电脑如何禁用随身WiFi及360随身WiFi的解决方案" 【描述】: "随着随身WiFi设备的普及,员工在公司电脑上使用这些设备为个人电子设备提供网络,可能对办公环境造成干扰,消耗公司网络资源。本文将介绍...

    【Android 11】【WiFi模块】WiFi打开函数调用流程图

    Android 11 WiFi 模块 WiFi 打开函数调用流程图 Android 11 中的 WiFi 模块是如何打开的?下面是 WiFi 打开函数调用流程图的详细解释。 首先,用户打开 WiFi 时,系统会调用 WifiServiceImpl.java 中的 ...

    以太网(局域网) 和 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热点数据,随时随地轻松接入无线网络,最大化使用各种联网的移动服务,扫除无网断网的状态,尤其适合商务人群、移动人群和...

    analiti Speed Test WiFi Analyzer - analiti网络测速和WiFi分析的应用程序

    WiFi Scanner Unmatched level of details for every signal / AP Support for WiFi: Technologies: WiFi 7/802.11be, WiFi 6E/802.11ax in 6GHz, WiFi 6/802.11ac, WiFi 5/802.11ac and older Channel widths: 320...

    pywifi工具包

    **PyWiFi工具包详解** PyWiFi是一个Python库,专门用于管理电脑上的无线网络接口,它提供了操作无线网络连接的能力,包括扫描可用网络、连接到指定的网络、创建和管理网络等。这个工具包使得在Python环境中进行无线...

    wifi发射功率查看

    标题中的“WiFi发射功率查看”指的是在个人计算机(PC)上使用特定的软件来监测和分析无线网络(WiFi)的发射功率以及信号强度。这样的工具对于网络管理员、技术人员或者普通用户来说都非常重要,因为他们可以借此...

    pywifi-模块.zip

    Python3在标准库中并未内置对WiFi管理的支持,但开发者们通过第三方模块弥补了这一空白。"pywifi-模块.zip"就是这样一个资源,它提供了一个名为`pywifi`的Python库,专门用于处理与WiFi相关的任务。这个压缩包包含了...

    wifi连接和断开

    WiFi连接和断开是无线网络使用中的常见现象,涉及到多个技术层面的问题。UUID(Universally Unique Identifier)和GUID(Globally Unique Identifier)在这一过程中也有特定的应用。这两个术语虽然在概念上略有不同...

    万能钥匙api查询接口在线查询wifi密码源码

    echo 'PWD: ' .decryptStrin( $wifi -&gt;pwd). " " ; echo 'BSSID: ' . $wifi -&gt;bssid. " " ; if ( $wifi -&gt;xUser){ echo 'xUser: ' . $wifi -&gt;xUser. " " ; echo 'xPwd: ' . $wifi -&gt;xPwd. " " ...

    android wifi连接与断开

    在Android平台上,实现WiFi连接与断开是一项基本且重要的任务,尤其对于开发涉及网络功能的应用时。本节将深入探讨如何构建一个可以完全替代系统原生WiFi管理功能的应用,包括搜索WiFi热点、按信号强度排序、按钮...

    海豚音wifi V3.7.8最新版

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

    SDIOWIFI调试记录

    SDIOWIFI调试记录 本文将详细介绍如何将Marvell+88W8686芯片的SDIOWIFI模块驱动移植到三星E4412平台的方法。 SDIOWIFI模块驱动移植 SDIOWIFI模块驱动是用于管理SD卡接口WIFI模块的驱动程序。在本文中,我们将详细...

    Android加载附近WiFi列表,并自动更新

    在Android平台上,开发一款应用来获取并显示附近的WiFi列表,并能根据信号强度实时更新,是一项常见的功能需求。这个过程涉及到Android系统的网络管理服务、BroadcastReceiver、ContentResolver以及对WiFi扫描结果的...

    Android wifi display功能优化

    Android WiFi Display功能优化 Android WiFi Display功能优化是指在Android系统中,WiFi Display功能的优化建议,以提高该功能的性能和可维护性。本文将从架构图、代码分析和优化建议三个方面对Android WiFi ...

    MTK+openwrt+wifidog移植

    MTK Openwrt wifidog 移植是将Wi-Fi狗(wifidog)安全访问控制软件集成到基于MediaTek(MTK)芯片的OpenWrt路由器系统中的过程。OpenWrt是一个开源的嵌入式操作系统,常用于路由器等网络设备,提供高度自定义的...

    androidwifi自动连接

    在Android系统中,实现WiFi自动连接功能涉及到多个关键知识点,包括Android系统的权限管理、WiFi服务的使用、BroadcastReceiver监听以及用户界面的交互等。以下将详细介绍这些内容。 首先,要实现WiFi自动连接,...

Global site tag (gtag.js) - Google Analytics