Android 8.0的scan流程

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 -p
commit 7e552863cea67e57b375f3db15e0baf70e22c39e
Author: Tony Mantler @google.com>
Date:   Fri Jan 8 11:12:49 2016 -0800

    Start using WifiTracker/AccessPoint from SettingsLib

    Change-Id: Ie951cdc5a3b2d3188dc1044df624a6d1a0efab74

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

以下是目前Android 8.0的scan流程,以及获取scan results的流程
Android 8.0的scan流程_第1张图片

你可能感兴趣的:(Android)