Android WiFi子系统深度解析:初始化、连接与WPS流程
需积分: 10 16 浏览量
更新于2024-09-09
1
收藏 163KB DOC 举报
"这篇文档是关于Android WiFi子系统的学习总结,涵盖了从系统初始化到连接AP,查找AP,配置AP以及分配IP的整个流程,并重点介绍了WPS(Wi-Fi Protected Setup)流程。文中还提到了与WiFi硬件抽象层(HAL)以及wpa_supplicant的交互,同时提供了大量的测试分析代码用于跟踪调试。"
Android WiFi子系统是Android操作系统中的一个重要组成部分,它负责处理无线网络的连接和管理。以下是对WiFi流程的详细说明:
**初始化**
初始化阶段主要由SystemServer中的ConnectivityService开始,它在构造函数中启动WPS(Wi-Fi Protected Setup)并创建WifiMonitor来监控网络事件。WifiTracker通过WifiMonitor接收wait_for_event返回的事件,而WifiService则负责启动或关闭WPS,并向WPS发送控制命令。
**连接AP**
当用户尝试连接到一个AP(接入点)时,这个过程通常由wifisetting发起,通过AIDL调用wifiservice的setwifienable方法。这会触发加载启动WPS,启动Monitor等一系列操作。
**查找AP**
查找AP是通过调用Wifiservice的StartScan方法发起SCAN命令,然后等待wait_for_event返回扫描结果。一旦扫描完成,发现的AP信息将被返回给调用者。
**配置AP**
配置AP首先检查Wifiservice的LIST_NETWORK,看是否已存在相同的网络配置。如果不存在,就通过ADD_NETWORK添加新的网络配置,并获取对应的网络ID。接着,通过ENABLE_NETWORK启用网络,WPS开始尝试连接到指定的AP。
**分配IP**
当WPS成功连接到AP后,WifiMonitor会监听到该事件,并调用wifiStateTacker的notifyStateChange。接着,发送EVENT_DHCP_START广播启动DHCP服务,以便从AP处获取IP地址和其他网络配置。
**WPS流程**
WPS是一个简化Wi-Fi设备设置的机制,它通过一个中间件与WiFiHAL层交互。中间件向上通过socket与HAL通信,处理wifi_cmd操作和event事件的返回;向下通过netlink与驱动程序交互,根据命令操作驱动并接收事件;同时,它还负责密码认证。
WiFiHAL层是Android与无线网卡驱动之间的接口,通过wpa_cli操作接口(本地socket封装)与WPS进行交互。WPS内部使用eloop机制来处理与上层和驱动的交互。
总结来说,Android WiFi子系统是一个复杂的网络管理框架,涉及多个层次的交互,从应用程序层的设置指令,到WiFi服务的处理,再到硬件驱动的通信,最后实现网络连接和配置。深入理解这一流程对于Android开发者尤其是无线网络相关的开发者至关重要。
2018-09-30 上传
2021-09-27 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
East0000000、
- 粉丝: 28
- 资源: 80
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍