`
Jack22
  • 浏览: 133329 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android的wifi模块中AIDL的通讯

 
阅读更多

  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

 

 

 

 

 

分享到:
评论

相关推荐

    Android Wifi模块分析

    `enableNetwork()`方法是通过`mWifiManager`接口调用的,这个接口是通过AIDL(Android Interface Definition Language)与系统服务中的`WIFIService`进行通信的。如果`enableNetwork()`失败,系统会记录错误并通知...

    android wifi应用层框架分析

    Android WIFI 应用层框架分析是从应用程序的角度描述 Android WIFI 的工作流程,主要介绍了各个控制接收模块的数据走向,具体数据传输流程和所调用到的方法介绍。本文将从 WIFI 初始化、WIFI 启动、开始扫描 AP、...

    android wifi 的大致流程图

    - 在Android WiFi模块中,部分操作需要与底层C/C++库进行交互,这时就会用到JNI(Java Native Interface)。例如,`WifiNative`类就是用来封装与原生层交互的逻辑。 - 例如加载内核模块、启动`wpa_supplicant`等操作...

    Android WIFI开发介绍

    #### 一、Android WIFI模块概述 Android系统中对于WIFI功能的支持主要依赖于一系列组件和服务的协同工作。从架构上看,这些组件和服务可以大致分为以下几个层次: 1. **应用层**: 包含用户可见的应用程序以及系统...

    android平台的WIFI模块[借鉴].pdf

    标题和描述中提及的“android平台的WIFI模块”以及相关标签并未给出,但是从提供的部分内容中我们可以提取和总结出以下重要的知识点: 1. WIFI模块在Android平台上的工作原理和技术标准: - WIFI模块遵守IEEE 802....

    android平台的WIFI模块.pdf

    在Android平台上,WIFI模块是系统中至关重要的部分,它提供了设备与Wi-Fi网络的连接能力。Wi-Fi是一种基于IEEE 802.11标准的无线连接技术,旨在提高不同设备之间的网络互通性。虽然Wi-Fi是802.11标准的一个实现,但...

    Android Wifi开发介绍

    WifiService是整个WiFi模块的核心,负责管理WiFi状态以及与wpa_supplicant进程的交互。wpa_supplicant是一个独立的用户空间控制程序,用于处理与WiFi硬件的通信和网络认证。 在Android系统中,WiFi的编程主要涉及到...

    Android wifi流程

    在Android中,这通常涉及到C/C++编写的模块。 4. **HAL层**:硬件抽象层,用于处理底层硬件设备的操作,比如与WiFi芯片的通信。 5. **内核层**:直接与硬件进行交互,执行如驱动加载、数据收发等任务。 #### 二、...

    学习android wifi子系统总结.doc

    Android Wi-Fi 子系统是一个复杂的系统,它涉及到多个组件和模块,包括 Wi-Fi 服务、Wi-Fi 设置、 Wi-Fi 监控、Wi-Fi 本地化和 Wi-Fi 硬件抽象层(HAL)。在本文中,我们将对 Android Wi-Fi 子系统进行总结,介绍其...

    android wifi

    首先,WiFi模块的初始化是系统启动过程中的关键步骤。在SystemServer启动时,会创建一个名为ConnectivityService的实例,这个服务负责管理网络连接,包括WiFi。通过`ServiceManager.addService`方法,Connectivity...

    android_wifi

    在Android WiFi模块中,关键的通信机制包括: - **AIDL**:用于实现跨进程通信,如客户端和服务端之间的数据交换。 - **JNI**:用于实现Java层与C/C++层之间的交互,如加载内核模块等操作。 - **Socket通信**:**`...

    wifi Ap热点

    3. `WifiStateTracker`会创建`WifiMonitor`来接收来自底层的事件,而`WifiService`则负责管理wpa_supplicant进程(用于认证和连接)及`WifiMonitor`的启停,是整个WiFi模块的核心组件。 **启动流程**: - 当用户...

    WIFI流程详解

    #### 二、Android系统中的WiFi模块初始化 在Android系统的启动过程中,SystemServer会生成ConnectivityService实例,负责管理网络连接服务。在ConnectivityService的构造函数中,会创建并初始化WifiService。这一...

    详述安卓wifi开发流程

    在用户界面层面,Android提供了WIFI模块,包括WirelessSettings和WifiSettings等设置界面,以及AccessPointDialog对话框让用户选择和配置网络。这些UI组件通过WifiEnabler类来处理用户操作,例如开关WiFi按钮。当...

Global site tag (gtag.js) - Google Analytics