android系统中的wifi的前端显示在应用Settings中设计的(pakages/apps/Settings),在wifi的开启,关闭,扫描都需要后台的WifiService类来提供服务,Settings跟WifiService是运行在两个不同进程的程序,所以就需要到了AIDL(Android interface definiton lanugage)来实现进程间的通信,当然实现进程通信还有别的方式,比如广播,意图,还有文件,但考虑到实际需求 要用前台Settings要实时的显示后台WifiService的状态,还是用AIDL合适
在系统启动的时候,会启动一系列的服务,其中就有WifiService。
现在分析启动wifi的这个过程的AIDL通讯
在Settings应用中用WifiEnabler.java这个类来封装了,wifi的启动和关闭还有wifi状态的转换及显示 。在WifiEnable.java中点击CheckBox,会执行onPreferenceChange(),在该方法里执行mWifiManager.setWifiEnabled(enable) 在WifiManager.setWifiEnabled()中执行mService.setWifiEnabled() ,mService为AIDL通信接口的实例,是一个WifiService的实例,可以通过它调用WifiService服务的内定义的方法。
mService是在取得WifiManager实例过程中调用ContextIpl.java类的getWifiManager()得到的
WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
写道
private WifiManager getWifiManager()
{
synchronized (sSync) {
if (sWifiManager == null) {
IBinder b = ServiceManager.getService(WIFI_SERVICE);
IWifiManager service = IWifiManager.Stub.asInterface(b);
sWifiManager = new WifiManager(service, mMainThread.getHandler());
}
}
return sWifiManager;
}
在WifiManeger的构造函数中,传递到WifiManger
分享到:
相关推荐
`enableNetwork()`方法是通过`mWifiManager`接口调用的,这个接口是通过AIDL(Android Interface Definition Language)与系统服务中的`WIFIService`进行通信的。如果`enableNetwork()`失败,系统会记录错误并通知...
Android WIFI 应用层框架分析是从应用程序的角度描述 Android WIFI 的工作流程,主要介绍了各个控制接收模块的数据走向,具体数据传输流程和所调用到的方法介绍。本文将从 WIFI 初始化、WIFI 启动、开始扫描 AP、...
- 在Android WiFi模块中,部分操作需要与底层C/C++库进行交互,这时就会用到JNI(Java Native Interface)。例如,`WifiNative`类就是用来封装与原生层交互的逻辑。 - 例如加载内核模块、启动`wpa_supplicant`等操作...
#### 一、Android WIFI模块概述 Android系统中对于WIFI功能的支持主要依赖于一系列组件和服务的协同工作。从架构上看,这些组件和服务可以大致分为以下几个层次: 1. **应用层**: 包含用户可见的应用程序以及系统...
标题和描述中提及的“android平台的WIFI模块”以及相关标签并未给出,但是从提供的部分内容中我们可以提取和总结出以下重要的知识点: 1. WIFI模块在Android平台上的工作原理和技术标准: - WIFI模块遵守IEEE 802....
在Android平台上,WIFI模块是系统中至关重要的部分,它提供了设备与Wi-Fi网络的连接能力。Wi-Fi是一种基于IEEE 802.11标准的无线连接技术,旨在提高不同设备之间的网络互通性。虽然Wi-Fi是802.11标准的一个实现,但...
WifiService是整个WiFi模块的核心,负责管理WiFi状态以及与wpa_supplicant进程的交互。wpa_supplicant是一个独立的用户空间控制程序,用于处理与WiFi硬件的通信和网络认证。 在Android系统中,WiFi的编程主要涉及到...
在Android中,这通常涉及到C/C++编写的模块。 4. **HAL层**:硬件抽象层,用于处理底层硬件设备的操作,比如与WiFi芯片的通信。 5. **内核层**:直接与硬件进行交互,执行如驱动加载、数据收发等任务。 #### 二、...
Android Wi-Fi 子系统是一个复杂的系统,它涉及到多个组件和模块,包括 Wi-Fi 服务、Wi-Fi 设置、 Wi-Fi 监控、Wi-Fi 本地化和 Wi-Fi 硬件抽象层(HAL)。在本文中,我们将对 Android Wi-Fi 子系统进行总结,介绍其...
首先,WiFi模块的初始化是系统启动过程中的关键步骤。在SystemServer启动时,会创建一个名为ConnectivityService的实例,这个服务负责管理网络连接,包括WiFi。通过`ServiceManager.addService`方法,Connectivity...
在Android WiFi模块中,关键的通信机制包括: - **AIDL**:用于实现跨进程通信,如客户端和服务端之间的数据交换。 - **JNI**:用于实现Java层与C/C++层之间的交互,如加载内核模块等操作。 - **Socket通信**:**`...
3. `WifiStateTracker`会创建`WifiMonitor`来接收来自底层的事件,而`WifiService`则负责管理wpa_supplicant进程(用于认证和连接)及`WifiMonitor`的启停,是整个WiFi模块的核心组件。 **启动流程**: - 当用户...
#### 二、Android系统中的WiFi模块初始化 在Android系统的启动过程中,SystemServer会生成ConnectivityService实例,负责管理网络连接服务。在ConnectivityService的构造函数中,会创建并初始化WifiService。这一...
在用户界面层面,Android提供了WIFI模块,包括WirelessSettings和WifiSettings等设置界面,以及AccessPointDialog对话框让用户选择和配置网络。这些UI组件通过WifiEnabler类来处理用户操作,例如开关WiFi按钮。当...