Android Q WiFi 启动流程分析
    1、WiFi 启动流程简介
    2、WiFi 启动流程应用层分析
    3、WiFi 启动流程服务层分析
        3.1 WifiController 分析
        3.2 WifiController 启动
    4、ClientModeImpl 状态机分析
    5、WifiConnectivityManager WiFi 网络连接管理类

1、WiFi 启动流程简介
    用户可以通过systemUi和设置里的WiFi开关打开WiFi,这时候会调用到WiFi framework的相关接口,继而再继续往下启用具体的硬件完成WiFi启动流程
2、WiFi 启动流程应用层分析
    在Android Setting 中,使用WifiEnabler 来控制WiFi 的开关操作,WifiEnabler 实现了OnSwitchChangeListener接口,当用户点击WiFi的开关按钮,
    就会回调到WifiEnabler onSwitchToggled 方法;在onSwitchToggled 方法调用WifiManager 的setWifiEnabled 方法来实现WiFi 的开关。
    onSwitchToggled源码:
     @Override
        public boolean onSwitchToggled(boolean isChecked) {
            //Do nothing if called as a result of a state machine event
            if (mStateMachineEvent) {
                return true;
            }
            // Show toast message if Wi-Fi is not allowed in airplane mode
            if (isChecked && !WirelessUtils.isRadioAllowed(mContext, Settings.Global.RADIO_WIFI)) {
                Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show();
                // Reset switch to off. No infinite check/listener loop.
                mSwitchWidget.setChecked(false);
                return false;
            }

if (isChecked) {
                mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_WIFI_ON);
            } else {
                // Log if user was connected at the time of switching off.
                mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_WIFI_OFF,
                        mConnected.get());
            }
            if (!mWifiManager.setWifiEnabled(isChecked)) {
                // Error
                mSwitchWidget.setEnabled(true);
                Toast.makeText(mContext, R.string.wifi_error, Toast.LENGTH_SHORT).show();
            }
            return true;
        }
    2.1 WifiManager 是WiFi 子系统的管理类,WiFi 子系统绝大部分功能都是通过WifiManager 来实现的,WifiManager 是Wifiserver 的代理类,通
        过AIDL 来调用Wifiserver 相应的函数。setWifiEnabled 函数实现如下:setWifiEnabled 调用mService setWifiEnabled 方法,mService 是
        IWifiManager 的实现,是Android wifiserver 的代理类,最终是调到WifiServiceImpl 的setWifiEnabled 方法
        setWifiEnabled源码:
            @Deprecated
            public boolean setWifiEnabled(boolean enabled) {
                try {
                    return mService.setWifiEnabled(mContext.getOpPackageName(), enabled);
                } catch (RemoteException e) {
                    throw e.rethrowFromSystemServer();
                }
            }

Android Q-wifi启动流程(一)相关推荐

  1. Android Q 开机启动流程

    https://www.it610.com/article/1304931662924124160.htm Android Q 开机启动流程 开机启动概述: step 1: 上电开机 长按power键 ...

  2. (四十四)Android O WiFi启动流程梳理

    前言:最近又重新拿起来WiFi模块,从WiFi 各个流程梳理开始复习一下. 参考博客:https://blog.csdn.net/csdn_of_coder/article/details/51541 ...

  3. Android 11 WiFi启动流程

    欢迎大家一起学习探讨通信之WLAN.本节重点基于Android11分析讨论WiFi开启流程.用户点击一下"WiFi"开关,WiFi开启了.看似如此简单操作,但系统流程调用还是相当复 ...

  4. 【Android 12.0】Android S WiFi启动业务流程分析(UML图)

    以下两张为Android S的WiFi启动(start)业务流程UML图,业务流程的过程详情因公司规定不可复制源码出来,所以想看业务流程详情的同学可以参考其他博主所发的博客.业务流程参考内容链接我会放 ...

  5. Android -- Wifi启动流程分析

    Android -- Wifi启动流程分析 Android网络各个模式中,Wifi应该是目前最常用的一种网络方式了:下面就简单介绍下Android中Wifi的启动流程. 当我在Setting菜单里点击 ...

  6. Android平台WIFI启动流程之二

    http://blog.sina.com.cn/s/blog_13146f9590101wji1.html [摘要] 本文从用户界面出发,从应用层到硬件适配层,对Android平台wifi启动和关闭的 ...

  7. Android Q 按键启动recovery模式

    Android Q 按键启动recovery模式 相关文件路径 LINUX/android/bootable/bootloader/lk/app/aboot/aboot.c LINUX/android ...

  8. Android R WiFi热点流程浅析

    Android R WiFi热点流程浅析 Android上的WiFi SoftAp功能是用户常用的功能之一,它能让我们分享手机的网络给其他设备使用. 那Android系统是如何实现SoftAp的呢,这 ...

  9. Android系统的启动流程简要分析

    这是我结合网上的资料以及自己分析android4.4的源码整理的笔记,对整个安卓系统的流程启动进行了梳理,很多细节并未展开,只是简要的进行了介绍. 一.Android系统的架构介绍 Android的整 ...

  10. c++builder启动了怎么停止_App 竟然是这样跑起来的 —— Android App/Activity 启动流程分析...

    在我的上一篇文章: AJie:按下电源键后竟然发生了这一幕 -- Android 系统启动流程分析​zhuanlan.zhihu.com 我们分析了系统在开机以后的一系列行为,其中最后一阶段 AMS( ...

最新文章

  1. iPhone 隐私新规下的“大地震”:四大平台损失近百亿美元,“连用户是男是女都分不清……”
  2. systemd进程管理工具实战教程
  3. 音视频技术:视频质量评价方法简介
  4. linux下=号与==号
  5. SQL Server 行转列,列转行。多行转成一列
  6. 反馈网络信息改善用户体验
  7. Axis2;wsdl生成客户端和serverJava代码
  8. javascript中数据类型及转换、String()和toString()的区别
  9. 多样人群,多面生活——观星盘八大策略人群洞察
  10. wuzhicms内的全局函数--load_class()
  11. Gmail priority inbox帮助你减少工作量
  12. 28个数控编程代码大全,众多程序员呕心沥血的私货
  13. 计算机中程序员计算是怎么计算,程序员计算器
  14. 如何用产品经理思维写一篇商业计划书
  15. C语言程序100例之C#版-019
  16. 黄太吉如何把煎饼卖到4000万估值
  17. python解一元二次方程复数_一元二次方程求解(包括复数各种情况)
  18. C语言刷题之动态规划进阶(二)
  19. 哪家科技巨头的人工智能最先觉醒:谷歌、Facebook、还是特斯拉?
  20. 微软推出Designer图形图像设计软件,与Adobe Photoshop的较量?

热门文章

  1. 【算法】统计qq一天中每秒在线人数
  2. Fabric源码分析之九数据库存储源码分析leveldb
  3. Unity中物体碰撞后去掉相互之间的反弹力
  4. 【python】 selenium中webdriver对网页标签的查找
  5. 技术政治之完美的奴隶
  6. 电脑计算机硬盘打不开怎么办,本地磁盘打不开什么原因 本地磁盘打不开怎么办(一) -电脑资料...
  7. 兆骑科创创新创业高层次人才引进,以赛引才,线上直播路演
  8. 1 谈谈section标签
  9. Goland 配置 gofmt
  10. YOLO目标检测算法的深入理解