Android——热点开关演讲稿

SoftAP打开与关闭

目录

1.三个名词的解释以及关系
Tethering——网络共享,WiFi热点、蓝牙、USB
SoftAp——热点(无线接入点),临时接入点
Hostapd——Hostapd是用于Linux系统的软件,,支持多种无线认证和加密协议,将任何计算机变成一个无线接入点和认证服务器
Android通过Hostapd,搭建一个SoftAp,通过Tethering实现不同的网络共享。
2.热点打开关闭的流程
基本就是不同参数的StartTethering、StartSoftAp以及StartHostapd!

00 Outline

六个目录,kernel那边未涉及到。
简单走一下流程!

01 Tethering 1

startTethering(TETHERING_WIFI) 不同参数
Preference 的监听器

01 Tethering 2

1.四个参数
Type——热点类型
Receiver——热点成功失败接收通知,回调函数
showProvisioningUi——是否网络配送界面
Handler——Handler对象,后台线程中接收结果

01 Tethering 3

binder通信基础
1.framework的一些进程
2.内核空间和用户空间
3.Binder 是基于 C/S 架构的。由一系列的组件组成,包括 Client、Server、ServiceManager、Binder 驱动。
其中 Client、Server、Service Manager 运行在用户空间,Binder 驱动运行在内核空间。
Binder通信原理图4.ServiceManager 是一个进程,Server 是另一个进程,Server 向 ServiceManager 中注册 Binder 必然涉及到进程间通信。当前实现进程间通信又要用到进程间通信

01 Tethering 4

第一个Binder通信

01 Tethering 5

1.几个名词
网络有效性检测(NetworkMonitor)
网络评分机制(NetworkFactory)
路由配置信息的获取(NetworkAgent)
网络物理端口的设置(Netd)
2.总结
通过wifi,mobile data,Tethering,VPN 等方式来获取路由配置信息。无论通过哪种方式,获取到路由配置信息后,需要交给ConnectivityService来处理,ConnectivityService通过ping网络来检查网络的有效性,进而影响到各个数据业务方式的评分值,ConnectivityService通过这些评分值来决定以哪个数据业务方式连接网络。

01 Tethering 6

网络共享

02 SoftAp 1

1.第二个Binder通信,wifi调用消息流,ASyncChannel主要是一个Binder通信的一个类,提供一种异步的,面向消息的方式进行Binder通信
2.WifiService相当于Wifi的控制器,负责各种Wifi的操作,比如开关,扫描以及连接等。

02 SoftAp 2

WifiService 三个交互

02 SoftAp 3

上面与WifiService交互的ContentProvider
WifiSettingsStore 特殊的两种Wifi状态,就是飞行模式下Wifi的状态,飞行模式下手动开启Wifi和打开飞行模式导致Wifi被关闭
WifiController这个状态机去监听飞行模式是否打开和关闭

02 SoftAp 4

WifiController 两种状态
WifiStateMachine 四种状态

02 SoftAp 5

02 SoftAp 6

相关推荐

  1. Android 实现热点开机后自动开启

    2024-06-07 01:04:01       72 阅读
  2. 管理Android12系统的WLAN热点

    2024-06-07 01:04:01       49 阅读
  3. Android 固定WIFI热点路由IP

    2024-06-07 01:04:01       40 阅读
  4. 《图像处理的璀璨星空:技术演进热点聚焦》

    2024-06-07 01:04:01       32 阅读
  5. Android13 热点默认5G频道配置修改

    2024-06-07 01:04:01       40 阅读
  6. Android 打开热点2.4G系统重启解决

    2024-06-07 01:04:01       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 01:04:01       75 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 01:04:01       80 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 01:04:01       64 阅读
  4. Python语言-面向对象

    2024-06-07 01:04:01       75 阅读

热门阅读

  1. 堆排序pta

    2024-06-07 01:04:01       22 阅读
  2. 如何增加服务器的高并发

    2024-06-07 01:04:01       29 阅读
  3. 大数据的数据变换与价值提炼

    2024-06-07 01:04:01       26 阅读
  4. Apache Calcite - 自定义数据源适配之访问内存列表

    2024-06-07 01:04:01       25 阅读
  5. 处理STM32 DMA方式下的HAL_UART_ERROR_ORE错误

    2024-06-07 01:04:01       31 阅读
  6. 是否引用传递一定优于值传递

    2024-06-07 01:04:01       28 阅读
  7. golang接口/枚举/结构使用示例

    2024-06-07 01:04:01       27 阅读
  8. GBDT的优势:为什么选择梯度提升决策树

    2024-06-07 01:04:01       34 阅读
  9. 后端开发面经系列 -- 中望C++一面面经

    2024-06-07 01:04:01       24 阅读