本文分析的是首次连接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过程相关推荐

  1. Android 8.0 WiFi Ap 热点控制接口

    1. Android 7.0 及其以前的 WiFi 热点接口 /*** Gets the Wi-Fi enabled state.** @return One of {@link #WIFI_AP_S ...

  2. Android 9.0 WiFi BG Scan机制

    欢迎大家一起学习探讨通信之WLAN.本节我们讨论关于Android设备的WiFi Background 扫描机制.通过使用WiFi设备的经验可知.WiFi设备连接上WiFi网络,必要条件是需要扫描到目 ...

  3. Android 7.0 Audio的Resample过程详解

    Android 7.0 Audio的Resample过程详解 Qidi 2017.02.23 (Markdown & Haroopad) [前言] 处理过音频文件的工程师都知道音频数据存在采样 ...

  4. Android Studio 使用 WIFI 连接手机

    Android Studio 使用 WIFI 连接手机 手机连线经常接触不良, 连上又断又连上又断的时候, 只要确保有一点时间让你连上 adb wifi, 就不用再听到那烦人的声音. 注意手机跟电脑必 ...

  5. 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门

    转自: http://www.cnblogs.com/littlehann/p/3700357.html Linux黑客大曝光: 第8章 无线网络 无线网络安全攻防实战进阶 无线网络安全 黑客大曝光 ...

  6. Android 源码 Wi-Fi 连接流程分析

    Wi-Fi 连接过程可以从 Settings App 中点击任意 Wi-Fi 条目连接说起.点击条目以后会弹出一个对话框,根据不同的 Wi-Fi 类型需要填入必要的信息,再点击连接按钮,发起连接过程. ...

  7. Android手机用wifi连接adb调试的方法

    https://www.jianshu.com/p/dc6898380e38 0x0 前言 Android开发肯定要连接pc的adb进行调试,传统的方法是用usb与pc进行连接,操作简单即插即用,缺点 ...

  8. Android 系统,Wifi连接后,显示wifi已连接但无法访问网络。

    7.1系统8.0系统,Wifi连接后,显示wifi已连接但无法访问网络. 原因: 连接wifi后,会访问google服务器,由于国内访问不了,所以会显示"wifi已连接,但无法访问网络&qu ...

  9. 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日,谷 ...

最新文章

  1. SQL Server数据类型
  2. 一流人才在军界和商界,二流人才在政界,三流人才在学术界;男孩子,可以什么都不会,但是必须会挣钱...
  3. Powershell记录2
  4. 机器学习模型可解释性的6种Python工具包,总有一款适合你!
  5. 通达信波段王指标公式主图_通达信波段线主图指标公式
  6. spring框架学习笔记2:配置详解
  7. 前端必备,Adobe Premiere Pro 常用快捷键
  8. 【POJ - 2594】Treasure Exploration(floyd传递闭包 + 最小路径覆盖,图论)
  9. C++:如何在VS中配置第三方动态库 【visual Studio 2017 + Opencv 】
  10. memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
  11. 使用bind()和connect()函数
  12. mysql怎么下载_mysql下载安装使用教程
  13. 《TCP/IP详解 卷1:协议》PDF分享
  14. 浅谈Java中的单例模式及四种懒汉模式
  15. 暮光之城电影自制礼物大事记
  16. 10000电信固话如何设置呼叫转移
  17. 迅为STM32MP157开发板使用手册更新啦
  18. Linux磁盘与目录的容量、连结档
  19. compiz的ubuntu10.04安装
  20. 电商大数据日志收集系统之EFK

热门文章

  1. 域控服务器错误事件解决方法,求大神帮忙,域控总有事件报错,事件ID:1864 - winServer论坛 - 51CTO技术论坛_中国领先的IT技术社区...
  2. Python生成器及send用法讲解
  3. sendfile详解
  4. flink 架构、概念介绍
  5. 男女通用的城府修练 城府不是有心眼,而是成熟
  6. 手把手使用Python教你破解谷歌(Google)人机验证码—上篇
  7. LibGdx练习-像素鸟(一)
  8. 原生JS写《像素鸟》的小游戏(下落的小鸟)
  9. 现要求输入一个整数n,请输出斐波那契数列的第n项
  10. ar71xx php-fpm,ar71xx和ar93xx平台所有8M固件!!nwan,aria2,qos,samba,tr,cpulimit-ng,等等...