Android 2.3版Wifi模块启动与解析

需积分: 9 7 下载量 156 浏览量 更新于2024-07-28 收藏 189KB DOCX 举报
本文主要分析了Android 2.3版本中的WiFi启动流程,包括相关文件解析、Wpa_supplicant的解析以及WiFi启动的具体步骤。在2.3版本中,WiFiLayer已被WifiSettings取代,不再负责复杂的WiFi功能。 一、WiFi模块相关文件解析 1) wifisettings.java 在`packages/apps/Settings/src/com/android/settings/wifi/wifisettings.java`文件中,`WifiSettings`类是设置界面的核心,它包含了一系列关键变量,如`IntentFilter`用于接收和响应广播消息,`BroadcastReceiver`用于处理这些消息,以及`Scanner`用于AP扫描。`WifiInfo`保存了最后一次获取的WiFi信息,`WifiManager`是系统提供的WiFi服务接口,`WifiEnabler`负责WiFi的开启和关闭操作,`AccessPoint`表示选定的接入点,而`WifiDialog`则可能用于显示WiFi设置的对话框。在`WifiSettings`的构造函数中,初始化了这些变量,并设置了IntentFilter来监听特定的WiFi相关事件。 二、Wpa_supplicant解析 Wpa_supplicant是Android系统中处理无线网络认证的关键组件,它负责与无线网络进行交互,如连接、认证、身份验证等。在Android 2.3中,Wpa_supplicant通常运行在后台,通过D-Bus通信协议与系统的WiFi服务交互。Wpa_supplicant的工作流程包括扫描无线网络、解析SSID、选择合适的网络进行连接,并处理加密和身份验证过程。 三、WiFi的启动流程 1. 用户触发WiFi启动,比如在设置界面中打开WiFi开关。 2. `WifiEnabler`接收到启动WiFi的请求,向系统发送开启WiFi的意图(Intent)。 3. `WifiManager`服务接收到意图,通过底层的JNI接口调用到Linux内核层的WiFi驱动。 4. WiFi驱动初始化,扫描周围的无线网络,将扫描结果返回给用户空间的Wpa_supplicant进程。 5. Wpa_supplicant处理扫描结果,更新可用网络列表,并通过D-Bus通知`WifiManager`。 6. `WifiSettings`界面更新显示可用的WiFi网络列表,用户可以选择一个网络进行连接。 7. 用户选择网络后,`WifiManager`发送连接意图,Wpa_supplicant接收到连接命令,进行身份验证和连接操作。 8. 连接成功后,Wpa_supplicant会通过D-Bus将状态更新通知给`WifiManager`,最终反馈到用户界面上。 这个流程涉及到Android系统服务、用户界面、内核驱动以及中间件等多个层次的交互,是理解Android WiFi功能实现的关键所在。在实际开发或调试过程中,理解这一流程可以帮助定位和解决问题。