版权声明:本文为原博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gh201030460222/article/details/80717604

Android 8.0 wifi架构

1. Android 8.0 wifi差异

1)与其他Android版本相比,整体架构还来,就多了个wificond跟底层的通信,当然framework整个的修改,还是挺大的 
2)wifi的scan、scan_results是通过wificond去跟kernel通信,不再通过wpa_supplicant了 
3)wifi direct的p2p find还是通过wpa-supplicant通信 
4)wifi的连接等相差操作,还是通过wpa_supplicant进行

2. Android 8.0 wifi的整体架构

Android 8.0的WIFI 架构差异分析_第1张图片

3. wifi的相关流程

HIDL: 
https://blog.csdn.net/gh201030460222/article/details/80551897

wifi scan flow: 
https://blog.csdn.net/gh201030460222/article/details/80553645

wifi open flow: 
https://blog.csdn.net/gh201030460222/article/details/80717386

wifi connect flow: 
https://blog.csdn.net/gh201030460222/article/details/80717690

wifi p2p scan flow: 
https://blog.csdn.net/gh201030460222/article/details/80717466

wifi p2p connect flow: 
https://blog.csdn.net/gh201030460222/article/details/80717513

wifi p2p协议部分: 
https://blog.csdn.net/gh201030460222/article/details/79872617

wifi hostap flow: 
https://blog.csdn.net/gh201030460222/article/details/80717513

Android 8.0 wifi打开流程

8.0跟其他的版本区别,就是8.0重新加入了一个wificond的client,有点类型wpa_supplicant功能,以下是整个系统自动开机时,wifi的自动打开流程,以及从TvSettings上用户手动打开wifi的流程,最后UI显示的整个过程 

以下是系统开机自动打开wifi,以及用户手动打开wifi的过程,详细的文字过程,以后有时间再补上了。。。 
Android 8.0的WIFI 架构差异分析_第2张图片


Android 8.0的scan流程

  • 最近在查看android 8.0的相关代码,以下是8.0 scan的相关信息
Android O的scan跟之前Android版本存在的差异

1) 现在scan的命令不是通过wpa_supplicant下发到kernel,而是直接改由wificond传送到kernel,而scan results的结果也是直接由kernel传给wificond,再由wificond传送给上层去显示 
2) 在framework层,现在scan改由scanner这个类去使用,之前从6.0开始慢慢用起来,现在到了8.0,可以说已经用了近95%了,剩下了目前google还在修改中,google的目标应该是想把scan整个完全独立出来,不跟其他的扯太大,例如WifiStateMachine 
3) 目前上层下发的scan,已经改由SettingsLib去定时下,不交给apk去做了。 
在android 8.0之前的版本,scan的定时扫描都是在上层app做的,但从8.0开始,google把这个定时器改到了framework中的SettingsLib(frameworks/base/packages/SettingsLib)中去了 
如下为google人员对TvSettings所做的更改上的Commit

packages/apps/TvSettings/Settings/src/com/android/tv/settings/connectivity$ git log -pcommit 7e552863cea67e57b375f3db15e0baf70e22c39eAuthor: Tony Mantler @google.com>Date:   Fri Jan 8 11:12:49 2016 -0800    Start using WifiTracker/AccessPoint from SettingsLib    Change-Id: Ie951cdc5a3b2d3188dc1044df624a6d1a0efab74
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4) 之前的版本scan操作,当同一时间下两次scan时,是直接交由wpa_supplicant去隔开的,现在由于直接把scan下发给kernel。所以,google已经把上层下的scan跟framework的自动scan也实现了分离,不让这两种flow打到,让同一时间只下一次scan,后一次则做pending动作

以下是目前Android 8.0的scan流程,以及获取scan results的流程 
这里写图片描述

更多相关文章

  1. Android仿人人客户端(v5.7.1)——对从服务器端(网络)获取的图片进行
  2. Android系统特性和系统架构
  3. Android Framework启动流程分析(一)
  4. android手机地图开发流程基础
  5. Android 9.0 ART编译分析(三)-虚拟机触发dex2oat编译流程
  6. Android 4.4 音量调节流程分析(一)
  7. Android启动流程、app启动原理

随机推荐

  1. Android 学习
  2. Google Maps Android API v2初体验
  3. 深入理解 Android消息处理系统的原理
  4. [置顶] 【Android】 基于XMPP Smack框架
  5. Android Manifest标签之manifest,meta-da
  6. 【Unity3D】Unity3D与Android的交互通信(A
  7. Android(安卓)Studio 简单介绍和使用问题
  8. android开发资源合集
  9. Android: TextView常用属性的用法详解
  10. [置顶] 对Android(安卓)MVVM的理解