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段流程就基本结束了

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值