Android 10以后引入了stable aidl方法,结合上一篇中WifiManager类中通过aidl调用到WifiServiceImpl类中方法,做个详细的记录.

一.frameworks/base/wifi/java/android/net/wifi/WifiManager.java类中方法

public boolean startSoftAp(@Nullable WifiConfiguration wifiConfig) {
        try {
            return mService.startSoftAp(wifiConfig);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

其中mService在类中定义为:   

@UnsupportedAppUsage
    IWifiManager mService;

赋值操作在构造函数里面:

public WifiManager(@NonNull Context context, @NonNull IWifiManager service,
        @NonNull Looper looper) {
        mService = service;
        mLooper = looper;
    }

IWifiManager为frameworks/base/wifi/java/android/net/wifi/IWifiManager.aidl {

startsoftap(){..}

}

二:开始找WifiManager在哪里进行实例话的,service传的哪个service

framework/base/wifi/java/android/net/wifi/WifiFrameworkInitializer.java

public static void registerServiceWrappers() {
        SystemServiceRegistry.registerContextAwareService(
                Context.WIFI_SERVICE,
                WifiManager.class,
                (context, serviceBinder) -> {
                    IWifiManager service = IWifiManager.Stub.asInterface(serviceBinder);
                    return new WifiManager(context, service, getInstanceLooper());
                }
        );

IWifiManager service通过标准的asInterface函数得到实例.

WIFI_SERVICE定义"wifi"

三:在wifi service中寻找IWifiManager 接口的绑定

在frameworks/opt/net/wifi/service/java/com/android/server/wifi/BaseWifiService.java类中实现.

先导入IWifiManager aidl包.

import android.net.wifi.IWifiManager;

然后BaseWifiService继承IWifiManager.Stub

public class BaseWifiService extends IWifiManager.Stub {

startsoftap(){..}

}

该类里面全是接口的声明.实际的实现在impl类里面

四.接口的实际实现位置

frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java

public class WifiServiceImpl extends BaseWifiService {

        startsoftap(){..}

}

该类继承第三步中的BaseWifiService,真正实现了IWifiManager aidl中的接口功能.

这是Android 11中wifimanger中对应adil 调用实现流程.如果我们自己想加服务的话,也可以按照同样的步骤来进行操作

Android 11 热点(softap)流程分析(二) WifiManager--AIDL相关推荐

  1. Android 11 热点(softap)流程分析

    最近在做Android 11中热点的功能,主要是网络共享,一个是usb网络共享,一个是热点网络共享,本文只是记录热点分享的流程. 一. settings 里面打开热点的接口跟原来类似 packages ...

  2. AOSP Android 8.0 冷启动流程分析(二)

    前奏: Android系统虽然基于Linux系统的,但是由于Android属于嵌入式设备,并没有像PC那样的BISO程序,取而代之的是Bootloader----系统启动加载器. /boot : 存放 ...

  3. c++builder启动了怎么停止_App 竟然是这样跑起来的 —— Android App/Activity 启动流程分析...

    在我的上一篇文章: AJie:按下电源键后竟然发生了这一幕 -- Android 系统启动流程分析​zhuanlan.zhihu.com 我们分析了系统在开机以后的一系列行为,其中最后一阶段 AMS( ...

  4. Android8.0(34)----Android 8.0 Settings流程分析与变动

    Android 8.0 Settings流程分析与变动 一,相比Android Settings 7.0 如下图,在7.0的基础上,去掉了7.0新加的侧滑菜单(可能是觉得有点鸡肋吧).多加了一级页面, ...

  5. Android 手机灭屏流程分析详解

    参考地址:https://www.jianshu.com/p/9241f3a91095 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 1.前言 2.Pow ...

  6. android加载efi分区,高通Android UEFI XBL 代码流程分析

    高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...

  7. android 屏幕旋转流程,android自动屏幕旋转流程分析.doc

    android自动屏幕旋转流程分析.doc android自动屏幕旋转流程分析 在android设置(Settings)中我们可以看到显示(display)下有一个自动屏幕旋转的checkbox, 如 ...

  8. Android WiFi —softAP流程分析

    Android WiFi - Ap功能实现与源码分析 0. 前言 wifiAp的ip WifiAp的config分析 2.1 默认的config 2.2 修改wifiAp的config配置流程 开启/ ...

  9. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )

    文章目录 前言 一.ActivityManagerService.attachApplicationLocked 二.ActivityStackSupervisor.attachApplication ...

最新文章

  1. java第三章_Java 第三章
  2. ubuntu 下安装 VIM 依赖vim-common错误
  3. CSS基本选择器、层次选择器、结构伪类选择器、属性选择器
  4. IE内置的WebBrowser控件之--WEB打印
  5. linux 挂iscisc存储,基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文.docx...
  6. Asp.Net Core使用Log4Net优化日志【项目开源】
  7. 安装完kali应该做的基本配置
  8. 外卖侠使用教程【干货】
  9. Java关键字与保留字
  10. <自由之路>LeetCode每日一题(DFS + 记忆化搜索)
  11. Google ----- 展示搜索的艺术!
  12. 《HarmonyOS开发 - 小凌派-RK2206开发笔记》第3章 应用开发
  13. GATK-HaplotypeCaller 变异检测详解
  14. Debian11安装MySql8
  15. OTP一次性动态密码工具实现
  16. Excel时间做差,统计加班时长
  17. 703n的OpenWrt配置四:把路由器变成下载机
  18. Pentaho Data Integration(Kettle) 6.0
  19. 记一次配置rewrite和return的经历
  20. 5月6日—5月9日三年级课程新

热门文章

  1. 坐标系之间的转换关系(ECEF、LLA、ENU)
  2. 二、Docker容器
  3. rock pi s 操作外设
  4. 可以兼容安卓的Linux,盘点那些牛X的国产操作系统,其中手机系统居然还能兼容安卓!...
  5. 三、四、五、轴数控加工中心有什么区别?
  6. 英首相提“脱欧”替代方案:成不成,谁说了算?
  7. CSS选择器有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先?
  8. 真人秀 reality show
  9. php数字大写,php数字大写转换的方法
  10. 3分钟理解指针和引用的区别【❤️建议收藏❤️】