![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android Wifi Framework解读
文章平均质量分 71
D0m1no
我们准备着深深地领受
那些意想不到的奇迹,
在漫长的岁月里忽然有
彗星的出现,狂风乍起。
展开
-
对双STA-双连接的一些思考
近期做这个开发,因为要和硬件同事合作,花了很多功夫和他们解释为什么双连接提升不了吞吐实际上,我自己也对这个特性有很多不懂的地方,实在头痛,这里整篇文章,把自己最近的困惑写一下基本都是口语化,没什么逻辑。原创 2022-09-29 15:00:19 · 1110 阅读 · 3 评论 -
初探Android S 双STA
Android S 双STA原创 2022-09-15 14:47:02 · 2167 阅读 · 4 评论 -
WifiMonitor解读
一句话总结WifiMonitor 负责从 wpa_supplicant 接收上报事件并通知 framework 进行相应处理WifiMonitor 维护一个 mMonitoringMap ,保存的是当前处于 monitoring 状态的 ifaceWifiMonitor 有一些 startMonitoring、 stopMonitoring 的操作,本质就是在操作这个 mapprivate final Map<String, Boolean> mMonitoringMap = new H原创 2021-05-27 16:29:33 · 1074 阅读 · 0 评论 -
framework是如何与WPAS通信的
那么现在我们来反向走读framework如何通知WPAS执行一些操作的以 开启wifi 为例,代码走到 WifiNative 之后(不要问我为什么会走到这里)// WifiNative.javapublic boolean connectToNetwork(@NonNull String ifaceName, WifiConfiguration configuration) { // Abort ongoing scan before connect() to unblock connect原创 2021-05-24 11:02:28 · 409 阅读 · 0 评论 -
WPAS是如何与framework通信的
这里先整理WPAS通知framework事件的源码external\wpa_supplicant_8\wpa_supplicant\hidl\1.3\hidl.cpp 中定义了一些 wpas_hidl_notify 前缀的方法这些方法是 WPAS 通知 hal 事件的接口以 wpas_hidl_notify_disconnect_reason 为例实际调用的是 HidlManager 这个类的 notifyDisconnectReason 方法(wpas_hidl_notify 方法都是这种形式)原创 2021-05-24 11:01:36 · 804 阅读 · 0 评论 -
WakeupController 走读
下周三要做内部培训这里先走读 WakeupController 完成对Android R WIFI重连场景的代码走读覆盖可以设想这样一种场景:用户手机wifi关闭,回到家自动打开并连接上家里的wifi我们把这个流程代码走读一遍WakeupController先看注释/** * WakeupController is responsible managing Auto Wifi. * * <p>It determines if and when to re-enable wif原创 2021-05-11 20:16:07 · 459 阅读 · 1 评论 -
Wifi启动流程 代码层面解析
Step 1WifiSettings类调用 createWifiEnabler() 实例化一个WifiEnablerStep 2WifiEnabler类创建广播来监听Wi-Fi状态的改变并在 onResume() 里注册广播,Wi-Fi状态改变时会被广播接收器mReceiver接收到,此时会通过 handleWifiStateChanged() 修改开关按钮状态。除此之外,WifiEnabler类实现SwitchWidgetController.onSwitchChangeListener接口,并实现原创 2020-09-08 21:34:56 · 1208 阅读 · 0 评论 -
WifiEnabler.java源码解析
packages/apps/settings/src/com/android/settings/wifi/WifiEnabler.java解析这份源码前,先说一下状态模式状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类状态模式的使用场景:一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为代码中包含大量与对象状态有关的条件语句,例如,一个操作中包含于庞大的多分支语句(if-else或switch-case),且这些分支依赖于该对象的状态原创 2020-09-02 11:37:07 · 412 阅读 · 0 评论 -
Android R Framework wifi扫描场景总结
文章目录Android Framework wifi扫描Android R wifi扫描场景(包含客制化项)亮屏情况下,在 WifiSetting 界面亮屏情况下,在非 WifiSettings 界面灭屏情况下无保存网络情况下,固定扫描Android Framework wifi扫描当打开wifi时、进入wifi settings时、亮屏时、灭屏时、连接状态变化时,都会触发扫描以下场景1/2/4中的扫描是全信道扫描,扫描控制逻辑在Android framework,涉及模块依次是WifiTracker原创 2021-04-27 15:30:31 · 1535 阅读 · 2 评论 -
Android R Framework Wi-Fi 扫描机制解读
文章目录WifiScanner.ScanListener && WifiScanner.PnoScanListenerAllSingleScanListenerSingleScanListenerPnoScanListener本文建立在研读 WifiConnectivityManager.java 和 其打印的log 的基础上WifiConnectivityManager 内置三种 ScanListener,分别是AllSingleScanListener implements Wi原创 2021-04-26 20:06:27 · 1209 阅读 · 0 评论 -
CandidateScorer
文章目录写在前面CompatibilityScorerScoreCardBasedScorerBubbleFunScorerThroughputScorer写在前面Android R 有四个 WifiCandidates.CandidateScorer,分别是CompatibilityScorerScoreCardBasedScorerBubbleFunScorerThroughputScorer它们在 WifiInjector 的构造函数中被初始化,并通过 mWifiNetworkSel原创 2021-04-25 20:18:32 · 423 阅读 · 0 评论 -
NetworkNominator 解读
NetworkNominator是 WifiNetworkSelector 的内部类,其内部对象记录在 mNominators 中,通过 WifiNetworkSelector 的 registerNetworkNominator 方法注册在 WifiInjector 的构造过程中注册了三个 NetworkNominator 对象:SavedNetworkNominator:用于保存的网络NetworkSuggestionNominator:用于提供最高可用性候选建议ScoredNetworkNo原创 2021-04-25 16:21:23 · 468 阅读 · 0 评论 -
WifiCandidates 解读
WifiCandidates 解读解释/** * Candidates for network selection */public class WifiCandidatesWifiCandidates 是方便 WifiNetworkSelector 进行 select network 动作时抽象出来的一个类可以简单理解为 参选网络WifiConnectivityManager 在收到底层传递的扫描结果消息时,在 handleScanResults 用到了 NetworkSelector原创 2021-04-23 16:59:14 · 407 阅读 · 0 评论 -
Android R WiFi 选网机制解读
我们从 WifiNetworkSelector 入手研究 Android R WiFi 选网机制在 WifiInjector 的构造过程中, 会初始化 WifiNetworkSelector 对象,并进行 registerCandidateScorer 动作, 之后注册了三个 NetworkNominator 对象mWifiNetworkSelector.registerCandidateScorer(compatibilityScorer);mWifiNetworkSelector.register原创 2021-04-23 16:58:21 · 1497 阅读 · 0 评论 -
NetworkSelector 和 WifiConnectivityManager
本文源自 WifiConfigManager NetworkSelector 和 WifiConnectivityManager1. WifiConnectivityManager 管理连接过程在其收到底层传递的扫描结果消息时,在 handleScanResults 中处理,里面调用了如下主要步骤:用到了 NetworkSelector 类对象进行处理,getCandidatesFromScan,以 ScanDetail 对象列表为输入获取到 WifiCandidates.Candidate 对象列转载 2021-04-22 20:14:13 · 955 阅读 · 0 评论 -
WiFi 扫描处理过程
本来源自 WiFi 扫描处理过程从 WifiServiceImpl.java 中进行上层的服务请求,进行扫描:/** * See {@link android.net.wifi.WifiManager#startScan} * * @param packageName Package name of the app that requests wifi scan. * @param featureId The feature in the package */@Overridepubli转载 2021-04-22 15:28:34 · 1069 阅读 · 0 评论 -
WifiConnectivityManager 管理扫描
写这篇博文前,参考了不少优秀的博客,对照着Android 11的源码,做了一次不大精细的走读本文源自WifiConnectivityManager 管理扫描WifiConnectivityManager 通过 WifiScanner.java 中 WifiScanner 类的 registerScanListener 方法注册 Scan 结果的回调监听句柄,实际上内部通过 AsyncChannel 向 WifiScanningService 层发送了 CMD_REGISTER_SCAN_LISTENER转载 2021-04-22 11:46:26 · 1116 阅读 · 0 评论 -
WifiNetworkSelector 走读
WifiNetworkSelector代码走读写在前面顾名思义,WifiNetworkSelector负责选出符合条件的wifi网络解释这份代码的解释/** * WifiNetworkSelector looks at all the connectivity scan results and * runs all the nominators to find or create matching configurations. * Then it makes a final selecti原创 2021-04-20 21:24:17 · 1208 阅读 · 0 评论