Android 11 热点(softap)流程分析(二) WifiManager--AIDL
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相关推荐
- Android 11 热点(softap)流程分析
最近在做Android 11中热点的功能,主要是网络共享,一个是usb网络共享,一个是热点网络共享,本文只是记录热点分享的流程. 一. settings 里面打开热点的接口跟原来类似 packages ...
- AOSP Android 8.0 冷启动流程分析(二)
前奏: Android系统虽然基于Linux系统的,但是由于Android属于嵌入式设备,并没有像PC那样的BISO程序,取而代之的是Bootloader----系统启动加载器. /boot : 存放 ...
- c++builder启动了怎么停止_App 竟然是这样跑起来的 —— Android App/Activity 启动流程分析...
在我的上一篇文章: AJie:按下电源键后竟然发生了这一幕 -- Android 系统启动流程分析zhuanlan.zhihu.com 我们分析了系统在开机以后的一系列行为,其中最后一阶段 AMS( ...
- Android8.0(34)----Android 8.0 Settings流程分析与变动
Android 8.0 Settings流程分析与变动 一,相比Android Settings 7.0 如下图,在7.0的基础上,去掉了7.0新加的侧滑菜单(可能是觉得有点鸡肋吧).多加了一级页面, ...
- Android 手机灭屏流程分析详解
参考地址:https://www.jianshu.com/p/9241f3a91095 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 1.前言 2.Pow ...
- android加载efi分区,高通Android UEFI XBL 代码流程分析
高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...
- android 屏幕旋转流程,android自动屏幕旋转流程分析.doc
android自动屏幕旋转流程分析.doc android自动屏幕旋转流程分析 在android设置(Settings)中我们可以看到显示(display)下有一个自动屏幕旋转的checkbox, 如 ...
- Android WiFi —softAP流程分析
Android WiFi - Ap功能实现与源码分析 0. 前言 wifiAp的ip WifiAp的config分析 2.1 默认的config 2.2 修改wifiAp的config配置流程 开启/ ...
- 【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )
文章目录 前言 一.ActivityManagerService.attachApplicationLocked 二.ActivityStackSupervisor.attachApplication ...
最新文章
- java第三章_Java 第三章
- ubuntu 下安装 VIM 依赖vim-common错误
- CSS基本选择器、层次选择器、结构伪类选择器、属性选择器
- IE内置的WebBrowser控件之--WEB打印
- linux 挂iscisc存储,基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文.docx...
- Asp.Net Core使用Log4Net优化日志【项目开源】
- 安装完kali应该做的基本配置
- 外卖侠使用教程【干货】
- Java关键字与保留字
- <自由之路>LeetCode每日一题(DFS + 记忆化搜索)
- Google ----- 展示搜索的艺术!
- 《HarmonyOS开发 - 小凌派-RK2206开发笔记》第3章 应用开发
- GATK-HaplotypeCaller 变异检测详解
- Debian11安装MySql8
- OTP一次性动态密码工具实现
- Excel时间做差,统计加班时长
- 703n的OpenWrt配置四:把路由器变成下载机
- Pentaho Data Integration(Kettle) 6.0
- 记一次配置rewrite和return的经历
- 5月6日—5月9日三年级课程新
热门文章
- 坐标系之间的转换关系(ECEF、LLA、ENU)
- 二、Docker容器
- rock pi s 操作外设
- 可以兼容安卓的Linux,盘点那些牛X的国产操作系统,其中手机系统居然还能兼容安卓!...
- 三、四、五、轴数控加工中心有什么区别?
- 英首相提“脱欧”替代方案:成不成,谁说了算?
- CSS选择器有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先?
- 真人秀 reality show
- php数字大写,php数字大写转换的方法
- 3分钟理解指针和引用的区别【❤️建议收藏❤️】