系列文章目录
第一章 国内下载AOSP最新源码的方法
第二章 下载AOSP WiFi相关的代码
第三章 将源码导入Android Studio(无需编译idegen)
前言
Wifi扫描热点
一、Wi-Fi扫描是什么?
Wifi扫描在没有wificond服务之前都是由wpa_supplicant下扫描指令给wlan驱动,驱动触发固件扫描上层设下去的信道,扫描完成后扫描结果由wlan驱动通过netlink发送给wpa_supplicant,wpa_supplicant然后通过回调上层设下来的监听器将结果传到framework里面的Wi-Fi服务,上层在扫描到热点后应用获取扫描结果显示出来,供用户点击后连接,当发现某个保存了的热点扫描到后会自动连接。在Android P后开始有wificond这个服务,里面有些过程都是wificond来控制。
二、Wi-Fi扫描过程
1. 打开Wi-Fi后扫描流程
暂时没时间详细写这个过程,找到了下面一篇讲的比较详细的,在此感谢博主:
Android P WiFi扫描流程详解
2. 不同场景下的扫描过程
描场景可以归结为以下四种:
1、 亮屏情况下,在Wifi settings界面,固定扫描,时间间隔为10s。
2、 亮屏情况下,非Wifi settings界面,二进制指数退避扫描,退避:interval*(2^n), 最小间隔min=20s, 最大间隔max=160s.
3、 灭屏情况下,有保存网络时,若已连接,不扫描,否则,PNO扫描,即只扫描已保存的网络。最小间隔min=20s,最大间隔max=20s*3=60s
4、 无保存网络情况下,固定扫描,间隔为5分钟,用于通知用户周围存在可用开放网络。
暂时没时间详细写这个过程,找到了下面一篇讲的比较详细的,在此感谢博主:
Android Wi-Fi扫描机制(Android P)
3. service与wificond交互类图
可以参考下面这篇博客:
添service与wificond交互类图
总结
这部分等后续有空再补充完整。