android连接wifi热点的操作

Android自动连接指定的WiFi热点 Android自动连接指定的WiFi热点 “Android自动连接指定的WiFi热点”,看上去这是个再基础不过的功能了。很多人都觉得很简单,网上也有大量的资料。但在以Android作为底层系统的硬件设备的连接上,特别针对我们自主开发的轻推投屏盒子为例,这个技术是比较重要的一个点。接下来我就以轻推投屏盒子为例,讲讲Android系统连接WiFi热点的一些难点。 **推投屏盒子有两张无线网卡,一个负责... 阅读详情

android的wifi包其实并不复杂,就只有那么几个类,最常用的类就是WifiManager、WifiConfiguration、ScanResult、WifiInfo

这里我总结一下连接wifi的代码,供以后查阅:

主要的逻辑代码:

package dxd.netcheck.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


import android.app.Activity;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiConfiguration.KeyMgmt;
import android.os.Bundle;
import android.util.Log;


public class NetCheckActivity extends Activity {
	 WifiManager mWifiManager ;
	 Thread mThread = new Thread(){
		@Override
		public void run() {
		    scanWifiStation();
		    Log.e("NetCheckActivity","connectWifi return -->" + connectWifi("dlink-dianxin" ,"dxd4321", KeyMgmt.WPA_PSK));
			super.run();
		}	
	 };
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
        mThread.start();// 异步搜索,防止UI阻塞。
    }


    /**
     * 连接wifi热点
     * return -1 failure
     * @return
     */
    public boolean connectWifi(String ssid ,String key ,int keyMgmt){
    	WifiConfiguration mWifiConfiguration = new WifiConfiguration();
    	mWifiConfiguration.SSID = "\"" + ssid + "\""; // SSID 和 密码别忘加双引号  
    	mWifiConfiguration.status = WifiConfiguration.Status.ENABLED;
    	mWifiConfiguration.preSharedKey = "\"" + key + "\"";
    	// 可要可不要。
    	/*mWifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
    	mWifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
    	mWifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
    	mWifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
    	mWifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN);*/
    	// 这个必须要。
    	switch(keyMgmt){
    		case KeyMgmt.NONE:
    			mWifiConfiguration.allowedKeyManagement.set(KeyMgmt.NONE);
    			break ;
    		case KeyMgmt.WPA_PSK:
    			mWifiConfiguration.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
    			break ;
    		case KeyMgmt.WPA_EAP:
    			mWifiConfiguration.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
    			break ;
    		case KeyMgmt.IEEE8021X:
    			mWifiConfiguration.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
    			break ;
    		default :
    			break ;
    	}
    	int id = mWifiManager.addNetwork(mWifiConfiguration);// 添加一个网络
    	return mWifiManager.enableNetwork(id, true); // 别忘设置enableNetwork(),不然不会自动去获取IP。对应热点,显示的信息是“停用”
    }
    
    /**
     * 打印wifi热点信息
     * @param wifiScanResult
     */
    public void print(List<ScanResult> wifiScanResult){
    	Iterator<ScanResult> iter = wifiScanResult.iterator();
		Log.e("NetCheckActivity", "wifiScanResult.size = " + wifiScanResult.size()) ;
		int i = 0 ;
		while(iter.hasNext()){
			ScanResult result = (ScanResult) iter.next();
			Log.e("NetCheckActivity", "result["+(i++)+"] = " + result.toString());
		}
    }
    
   
    /**
     * 扫描wifi热点
     */
    public void scanWifiStation(){
    	List<ScanResult> wifiScanResult = new ArrayList<ScanResult>();
    	Log.e("NetCheckActivity","mWifiManager.getWifiState()" + mWifiManager.getWifiState());
    	if(!mWifiManager.isWifiEnabled()){
    		// 如果当前wifi的状态不是打开状态,那么就打开它
    		mWifiManager.setWifiEnabled(true);
    	}
    	if(mWifiManager.startScan()){// 如果成功打开Wifi,那么就可用扫描周围的热点。
    		wifiScanResult = mWifiManager.getScanResults();
    		if(wifiScanResult == null){
    			boolean flag = true ; 
    			int time = 0 ;
            	while(flag){// 此循环保证wifi打开,和搜索附近的wifi热点,直到收到为止。这两个功能
            		Log.e("NetCheckActivity", "wifiScanResult is null");
            		try {
				Thread.sleep(2000);
				time++ ;
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
            		wifiScanResult = mWifiManager.getScanResults();
            		if(wifiScanResult.size() > 0){
            			flag = false ;
            			// 这里可以发送消息给UI,让页面显示收到的wifi热点的信息。
            			print(wifiScanResult);
            		}
            		if(time == 5){ // 10秒还没有搜索到wifi热点的话,也不搜索了。
            			flag = false ;
            			// 这里可以发送消息给UI,让页面显示收不到wifi热点的提示。
            		}
            	}
    		}else{
    			//如果之前就能收到wifi热点的信息,那么这里就可以直接发消息给UI吧
    			print(wifiScanResult);
        	}
    	}
    }
}
当然,在wifi热点搜索这个模块,要看不同的需求,像android系统自带的wifi搜索就是一直都在搜。另外,WifiConfiguration中的加密算法、协议等等,其实还是比较重要的,但是只要不是非常重要的通信哪些,就没必要添加那么多的算法。

Android WiFi 扫描和连接热点 本章主要介绍用户手动的在Settings中点击Scan和Connect按钮,输入密码后的连接过程,先看整体流程图: WiFi Scan过程分析 当用户进入Settings点击Scan后,就会调用到WifiManager的startScan()方法,当然在Settings里面有设置Scan的定时器,每隔一段时间就会去scan,在Wifi Framework中也有scan的定时器。对照上面 阅读详情

相关推荐

Android自定义连接指定WiFi&热点开关

Android自定义连接指定WiFi&热点开关连接WiFi热点开关 连接WiFi 目的:可通过接受用户输入WiFi SSID、密码、密码类型控制设备连接至该WiFi 步骤:开启WiFi、启动WiFi网络搜索、连接WiFi 具体实现方式: (1)启用WIFI:检查设备目前是否已开启WiFi,如果未开启则开启WiFi,如果已开启并且处于已连接状态,则先断开当前连接,随后注册广播监听WiFi状...

weixin_43835637的博客 3490

android搜索周围wifi列表,【Android】 查看周围wifi的ssid,并按信号强弱排序

想要查看周围的wifi信息,需要用到WifiManager类private WifiManager wifiManager; // 管理wifiwifiManager = (WifiManager) getSystemService(WIFI_SERVICE); //获得系统wifi服务WifiManager类中的getScanResults可以得到一个list集合,包括周围wifi的所有信息,不...

weixin_30954879的博客 1134

Android11修改自动允许连接到建议的WLAN网络

根据字符串定位到frameworks\opt\net\wifi\service\java\com\android\server\wifi\WifiNetworkSuggestionsManager.java 中的private void sendUserApprovalDialog(@NonNull String packageName, int uid) 函数,这里就是弹出对话框的地方。客户的app需要连接指定的wifi,但是会提示下面的对话框(是否允许系统连接到建议的WLAN网络?

Android系统开发笔记 1259

android连接wifi热点,Android已连接到其他wifi,慢慢连接到wifi热点

我一直在研究wifi连接 . 我可以使用Android设备打开wifi热点,另一个Android设备连接到它 .但这是一个问题 . 我发现wifi状态将断开并重新连接到它已经记住的wifi和最后一个(我猜它发现热点准备就绪时)再次断开并重新连接到我的wifi热点 . 这个过程耗时差不多20~30秒 .这是我的代码:private void connectToWiFiHotSpot() {WifiM...

weixin_39604819的博客 384

find命令

命令是 Linux/Unix 系统中用于搜索文件和目录的强大工具,支持多种搜索条件组合,并能对搜索结果执行各种操作。以下是其详细说明、常用参数及示例: 搜索路径:指定起始目录(如 、 或 表示当前目录)。 查找条件:基于文件名、类型、大小、时间等属性过滤。 处理动作:对匹配结果执行操作(如打印、删除、执行命令等)。 常用参数及示例 1. 按名称查找 :区分大小写匹配文件名。 :不区分大小写匹配文件名。 2. 按文件类型查找 :指定文件类型。 文件类型: :普通文件 :目录 :符号链接

qiao2458的博客 1136

人工智能-CS188 Project 2: Multi-agents

一、项目介绍 项目介绍网页 项目代码下载 本项目是采用Berkeley的CS188课程内容实习二的内容,在这个项目中,我们将为经典版本的Pacman 设计自动算法,包括幽灵。在此过程中,我们将实现 minimax 和 expectimax 搜索并尝试评估函数设计 完成作业只需要完成5个题目,按照项目介绍的步骤进行完成,主要是在multiAgents.py文件中进行补充代码 二、代码详情 1、Question1:Reflex Agent 略 2、Question2:Minimax 套用ppt上的minm

xiten的博客 8285

Android手机无法连接WIFI等问题的6种解决方案

手机通过USB线连接上电脑,如果电脑没有安装adb驱动,此时可以安装"驱动人生"或"驱动精灵",然后在"驱动人生"或"驱动精灵"上安装adb驱动,最后才可以通过adb shell去连接手机,默认提供了三个服务器,分别是小米、高通、V2EX,根据延迟选择就行了,然后应用。(3).Android手机上会弹出提示对话框"USB连接方式",选择"文件传输"(1)."设置"--->"开发人员选项"或"开发者选项"--->"USB调试"(1)."设置"--->"关于手机"--->"版本号"(2).连续点击"版本号"

哆啦安全 1万+

差分运放实战:如何快速计算带直流偏置的电路(附详细推导步骤)

本文详细解析了差分运放电路在带直流偏置设计中的核心计算方法和实战技巧。通过可视化参数关系和分步拆解,帮助工程师快速掌握电路设计精髓,包括虚短虚断原理、偏置电压计算及非理想因素处理,提升信号调理和传感器接口设计的效率与精度。

o4p5q6r7s的博客 411

android wifi讲解,android wifi讲解 wifi列表显示

addNetwork(WifiConfiguration config) 添加一个config描述的WIFI网络,默认情况下,这个WIFI网络是DISABLE状态的。calculateSignalLevel(int rssi , int numLevels) 计算信号的等级compareSignalLevel(int rssiA, int rssiB) 对比网络A和网络B的信号强度createWi...

weixin_36324960的博客 803

MATLAB打开.m文件乱码解决办法

Matlab打开.m文件出现中文乱码问题,是因为Matlab存在两种编码格式:GBK和UTF-8,而不同版本的Matlab编码格式可能不统一,因此在不同版本的Matlab打开文件,由于编码格式的改变,会导致注释乱码。 1.查看你的Matlab的文件编码方式,在Matlab的命令行窗口输入feature('locale') ,如下图,可以看到默认编码为GBK,那问题就变成了将Matlab的文件编码方式GBK修改成UTF-8; 2.找到你的Matlab安装目录bin文件夹下的lcdata_utf.

zhugby的博客 4万+

stc8g1k08硬件iic读取aht20温湿度及0.91寸oled显示

使用stc8g1k08读取aht20温湿度及0.91寸oled显示。

qq_61688416的博客 2771

android wifi讲解 wifi列表显示

1.怎样获取wifi对象并进行操作 要操作WIFI设备,需要先获取Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象,并通过这个对象来管理WIFI设备。   addNetwork(WifiConfiguration config) 添加一个config描述的WIFI网络,默认情况下,这个WIFI网络是DIS

我的博客 972

关于爱思唯尔官方Latex模版参考文献不是按照引用顺序编号,乱序问题

接下来使用工具打开cas-model2-names.bst文件,全词匹配搜索。其他期刊的模版也是一样的操作,把规定序号的规则的。爱思唯尔给的Latex模版大概文件结构如此。发现是按照第一作者的姓氏的大写字母排序。命令行给注释掉,小写的sort可别注释。

weixin_42748439的博客 5111

Android开发之扫描附近wifi热点并列表显示

 近期项目中用到了wifi模块。今天做一个简单的总结。 參考:http://www.2cto.com/kf/201310/253617.html 1.如何获取wifi对象并进行操作 要操作WIFI设备,须要先获取Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象。并通过这个对象来管理WIFI设备。 ...

weixin_33720956的博客 433

【雕爷学编程】Arduino动手做(71)---红外遥控器及接收模块3

雕爷学编程,Arduino动手做,开源硬件,创客传感器,红外遥控器及接收模块

雕爷学编程 2288

基于Termux的Android平台OpenClaw部署:移动端AI助理实现

本文介绍了在Android设备上通过Termux部署OpenClaw AI助理的方案。Android设备的便携性、Termux提供的完整Linux环境以及多样化的硬件配置使其成为理想的部署平台。文章详细分析了不同级别Android设备的硬件规格(从入门级到旗舰级),并提供了最低/推荐配置要求。部署步骤包括Termux安装初始化、Python环境配置以及性能优化建议。该方案充分利用Android设备的传感器和电池供电优势,为移动办公、学习等场景提供了低成本、高便携性的AI助理解决方案。

博客 3011

android wifi应用

1.怎样获取wifi对象并进行操作 要操作WIFI设备,需要先获取Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象,并通过这个对象来管理WIFI设备。   addNetwork(WifiConfiguration config) 添加一个config描述的WIFI网络,默认情况下,这个WIFI网络是DIS

IT_醉仙的专栏 814

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android 连接Wifi和创建Wifi热点

上代码: MainActivity.java   [java] view plaincopy   package com.widget.hotspot;      import android.os.Bundle;   import android.app.Activity;   import android.content.BroadcastReceiv...

yihaoxue的博客 214

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android wifi热点地址,Android网络相关(WiFi的开关,WiFi热点的开关,获取手机IP地址等)...

下面是一个跟安卓网络相关的工具类,里面包含了一些很经常使用的功能,如WiFi的开关,WiFi热点的开关,获取手机IP地址等……javaimport android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.net.wifi.WifiConf...

weixin_39736150的博客 313

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

打开wifi热点以及连接wifi

添加权限 打开wifi热点: package test.sam; public class HelloanActivity extends Activity implements View.OnClickListener { private TextView textView = null; private WifiManager wifiManager = null;

落埃无蒂的专栏 1920

【移动开发】Android中WIFI开发总结(一)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://smallwoniu.blog.51cto.com/3911954/1334951        WIFI就是一种无线联网技术,常见的是使用无线路由器。那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。如果无线路由器连接了一个ADSL线路

killcwd的专栏 630

Android中的wifi 概述

1、WIFI设备是个啥?     WIFI是个啥?请移步至百度百科。   2、WIFI有哪些状态?     在Android的官方文档中定义了如下五种状态: WIFI_STATE_DISABLED   WIFI网卡不可用 WIFI_STATE_DISABLING  WIFI网卡正在关闭 WIFI_STATE_ENABLED     WIFI网卡可用 WIFI_STA

sosohotsummer的专栏 1028

Android使用wifi Ap核心类

package com.example.wifihotspot2; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Iterator; import java.util.List; import android.content.Context; import android

qdb 940

android 图片热点区域,Android开发之扫描附近wifi热点并列表显示

最近项目中用到了wifi模块,今天做一个简单的总结。参考:http://www.2cto.com/kf/201310/253617.html1.怎样获取wifi对象并进行操作要操作WIFI设备,需要先获取Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象,并通过这个对象来管理WIFI设备。addNetwork(WifiCon...

weixin_42502060的博客 383

Android学习笔记(十)WIFI设备

一、废话   很久没有更新博客了,因为放假在家没有网络,直到前天才上班,昨晚去潇洒了,今天开始继续更新博客。在笔记九中介绍了蓝牙设备,并在结尾的时候说了要介绍下WIFI设备的一些操作。 二、正文   

zhengxiuchen86的博客 382

安卓adb命令启动wifi方法

初始操作: insmod /system/lib/modules/wlan.ko //加载驱动模块 start wpa_supplicant //启动wpa_supplicant 扫描热点: wpa_cli -iwlan0 scan wpa_cli -iwlan0 scan_results 添加热点: wpa_cli -iwlan0 add_network 0 wpa_cli -iwlan0 set_network 0...

u014415522的专栏 7448
上一篇: TabActivity的浅薄理解
下一篇: android Http通信之get方式
杜小东
博客等级 码龄16年 45粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值