Android 9.0 Wifi连接AP过程
本文分析的是首次连接AP(没有保存参数的AP)的过程。
一、简易流程图
二、代码执行流程
2.1 Settings应用
2.2 WifiManager.java
通过异步通道AsyncChannel来调用WifiServiceImpl的ClientHandler来处理SAVE_NETWORK消息。
2.3 WifiServiceImpl.java
mWifiStateMachine.sendMessage发送消息直接让WifiStateMachine状态机来处理。
2.4 WifiStateMachine.java
主要看这两个方法
调用saveNetworkConfigAndSendReply来保存连接配置参数并发送广播。
调用了startConnectToNetwork方法去连接AP。先看下saveNetworkConfigAndSendReply方法;
这里主要执行了两个操作,
调用mWifiConfigManager.addOrUpdateNetwork进行配置参数的保存,调用 broadcastWifiCredentialChanged发送广播刷新。再接着看startConnectToNetwork方法。
发送CMD_START_CONNECT消息,ConnectModeState会处理CMD_START_CONNECT 消息。
这里调用了mWifiNative.connectToNetwork()方法。
2.5 WifiNative.java
需要关注下这个方法的注释,注释说明了这个方法做了6件事:
(1)中止任何正在进行的扫描以免阻塞连接请求
(2)移除wpa_supplicant里的所有现有网络(这会隐式触发断开连接)
(3)在wpa_supplicant里添加一个新的网络
(4)在wpa_supplicant中保存提供的configuration
(5)在wpa_supplicant中选择新的网络
(6)触发wpa_supplicant 的重新连接命令
我们再看下mSupplicantStaIfaceHal.connectToNetwork()方法。
2.6 SupplicantStaIfaceHal.java
这里先执行了addNetworkAndSaveConfig()方法添加网络。然后再执行了networkHandle.select()方法。
2.7 SupplicantStaNetworkHal.java
mISupplicantStaNetwork.select()方法就是通过hidl调用底层supplicant。
WIFI连接热点的Java段流程就基本结束了
Android 9.0 Wifi连接AP过程相关推荐
- Android 8.0 WiFi Ap 热点控制接口
1. Android 7.0 及其以前的 WiFi 热点接口 /*** Gets the Wi-Fi enabled state.** @return One of {@link #WIFI_AP_S ...
- Android 9.0 WiFi BG Scan机制
欢迎大家一起学习探讨通信之WLAN.本节我们讨论关于Android设备的WiFi Background 扫描机制.通过使用WiFi设备的经验可知.WiFi设备连接上WiFi网络,必要条件是需要扫描到目 ...
- Android 7.0 Audio的Resample过程详解
Android 7.0 Audio的Resample过程详解 Qidi 2017.02.23 (Markdown & Haroopad) [前言] 处理过音频文件的工程师都知道音频数据存在采样 ...
- Android Studio 使用 WIFI 连接手机
Android Studio 使用 WIFI 连接手机 手机连线经常接触不良, 连上又断又连上又断的时候, 只要确保有一点时间让你连上 adb wifi, 就不用再听到那烦人的声音. 注意手机跟电脑必 ...
- 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门
转自: http://www.cnblogs.com/littlehann/p/3700357.html Linux黑客大曝光: 第8章 无线网络 无线网络安全攻防实战进阶 无线网络安全 黑客大曝光 ...
- Android 源码 Wi-Fi 连接流程分析
Wi-Fi 连接过程可以从 Settings App 中点击任意 Wi-Fi 条目连接说起.点击条目以后会弹出一个对话框,根据不同的 Wi-Fi 类型需要填入必要的信息,再点击连接按钮,发起连接过程. ...
- Android手机用wifi连接adb调试的方法
https://www.jianshu.com/p/dc6898380e38 0x0 前言 Android开发肯定要连接pc的adb进行调试,传统的方法是用usb与pc进行连接,操作简单即插即用,缺点 ...
- Android 系统,Wifi连接后,显示wifi已连接但无法访问网络。
7.1系统8.0系统,Wifi连接后,显示wifi已连接但无法访问网络. 原因: 连接wifi后,会访问google服务器,由于国内访问不了,所以会显示"wifi已连接,但无法访问网络&qu ...
- nexus+7+android+5.0++wifi+代理,谷歌Nexus5吃上安卓8.0:除了WiFi全不能正常工作
原标题:谷歌Nexus5吃上安卓8.0:除了WiFi全不能正常工作 IT之家9月4日消息 谷歌Nexus5发布于2013年10月31日,初始搭载的系统为Android 4.4,2015年12月8日,谷 ...
最新文章
- SQL Server数据类型
- 一流人才在军界和商界,二流人才在政界,三流人才在学术界;男孩子,可以什么都不会,但是必须会挣钱...
- Powershell记录2
- 机器学习模型可解释性的6种Python工具包,总有一款适合你!
- 通达信波段王指标公式主图_通达信波段线主图指标公式
- spring框架学习笔记2:配置详解
- 前端必备,Adobe Premiere Pro 常用快捷键
- 【POJ - 2594】Treasure Exploration(floyd传递闭包 + 最小路径覆盖,图论)
- C++:如何在VS中配置第三方动态库 【visual Studio 2017 + Opencv 】
- memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
- 使用bind()和connect()函数
- mysql怎么下载_mysql下载安装使用教程
- 《TCP/IP详解 卷1:协议》PDF分享
- 浅谈Java中的单例模式及四种懒汉模式
- 暮光之城电影自制礼物大事记
- 10000电信固话如何设置呼叫转移
- 迅为STM32MP157开发板使用手册更新啦
- Linux磁盘与目录的容量、连结档
- compiz的ubuntu10.04安装
- 电商大数据日志收集系统之EFK
热门文章
- 域控服务器错误事件解决方法,求大神帮忙,域控总有事件报错,事件ID:1864 - winServer论坛 - 51CTO技术论坛_中国领先的IT技术社区...
- Python生成器及send用法讲解
- sendfile详解
- flink 架构、概念介绍
- 男女通用的城府修练 城府不是有心眼,而是成熟
- 手把手使用Python教你破解谷歌(Google)人机验证码—上篇
- LibGdx练习-像素鸟(一)
- 原生JS写《像素鸟》的小游戏(下落的小鸟)
- 现要求输入一个整数n,请输出斐波那契数列的第n项
- ar71xx php-fpm,ar71xx和ar93xx平台所有8M固件!!nwan,aria2,qos,samba,tr,cpulimit-ng,等等...