SystemUI模块
StatusBar:通知消息提示和状态展现
NavigationBar:返回,HOME,Recent
KeyGuard:锁屏模块可以看做单独的应用(包括息屏与亮屏),提供基本的手机个人隐私保护
Recents:近期应用管理,以堆叠栈的形式展现。
Notification Panel:展示系统或应用通知内容。提供快速系统设置开关。
VolumeUI:来用展示或控制音量的变化:媒体音量、铃声音量与闹钟音量
截屏界面:长按电源键+音量下键后截屏,用以展示截取的屏幕照片/内容
PowerUI:主要处理和Power相关的事件,比如省电模式切换、电池电量变化和开关屏事件等。
RingtonePlayer:铃声播放
StackDivider:控制管理分屏
PipUI:提供对于画中画模式的管理
1. SystemUI相关技术介绍;嵌入式系统移植 - SystemUI : NotificationPanelView - 首次下拉和展开 QSPanel流程_iFinelio Tower 的博客-CSDN博客
2. SystemUI概述与分析
SystemUI架构分析_FamilyYuan的博客-CSDN博客_systemui
3. Zygote进程与AMS之间的跨进程通信为什么要用Socket不用binder
参考:启动App时AMS与Zygote进程的跨进程通信过程中为什么要用Socket?_yzpbright的博客-CSDN博客
4. SystemUI博主(该博主有很多关于SystemUI的文章)
参考:KeyguardBouncer启动流程_tj_shenzhendaxue的专栏-CSDN博客
StatusBar
StatusBar系统图标显示流程
1. 显示流程图
2. 各结点调用函数解释
(1)MobileSignalController.java
notifyListeners函数:监听系统状态,若监听到SignalCallBack反馈(即启动蓝牙了),则调用callback.setMobileDataIndicator函数;
(2)CallbackHandler.java
setMobileDataIndicator函数:将状态值传递到 StatusBarSignalPolicy类中解析显示;
(3)StatusBarSignalPolicy.java
setMobileDataIndicator函数:对图标状态进行赋值;
(4)StatusBarIconControllerImpl.java
setMobileIcons函数:设置手机状态图标(例如:蓝牙)
(5)StatusBarIconController.java
applyMobileState函数:将设置好的图标应用到状态栏
(6)StatusBarMobileView.java
updateState函数:更新当前状态栏的显示效果
3. 参考文章
SystemUI 的信号栏修改以及配置流程(过程较为完整)
网址:https://blog.csdn.net/kongbaidepao/article/details/88719985
图标显示流程:
网址:https://www.bbsmax.com/A/LPdooR3yd3/
SystemUI状态栏(该博主讲解比较全,好几篇文章)
参考:Android SystemUI之StatusBar,状态栏(二)_肖岩-CSDN博客
SystemUI状态栏启动流程
参考:状态栏SystemUI的启动过程_Android专栏-CSDN博客
状态栏图标更新流程分析
参考:Android的StatusBar分析 - 智行无疆 - 博客园
状态栏StatusIcon加载流程
参考:SystemUI之状态栏status icon加载流程 - 简书
状态栏多图标成点
参考:Android Q : 适配状态栏图标(图标过多时显示一个点)_AiHH的博客-CSDN博客
状态栏反色
深入理解Android(一本书 讲解了SystemUI等内容)
参考:7.1.3 理解IStatusBarService · 深入理解Android 卷III · 看云
自动亮度调节快捷设置
内容:三方apk中如何在下拉状态栏中添加自动亮度调节快捷设置
参考: https://blog.csdn.net/xiangzaixiansheng/article/details/87618305
QS亮度调节初始化流程
StatusBar(状态栏)显示界面
ViewStub控件
参考:ViewStub基本用法_Q 的博客-CSDN博客_viewstub
1. config_showOperatorNameInStatusBar属性
状态栏显示运营商信息:将该属性设置为true;
2. include标签
使用include显示悬浮式通知布局
状态栏主要控件
系统图标控件
1. 定义图标的资源文件
"xliff:g"标签
参考:"xliff:g"标签_会飞的鱼~的博客-CSDN博客
Notification通知栏
1. 管理流程-SystemServer进程
在SystemServer进程中对Notification处理流程如下:
参考文章
Android通知系统源码解析_PPLLiang的博客-CSDN博客
通知栏相关函数与类的解析
Android SystemUI组件(04)状态栏-Notification显示&管理_wangdsh的博客-CSDN博客
下拉通知栏源码分析
SystemUI下拉通知栏的源码分析_u010823818的博客-CSDN博客
下拉通知栏简介
SystemUI 下拉通知栏快捷键加载流程_tj_shenzhendaxue的专栏-CSDN博客
SystemUI博主
SystemUI简介即SystemUI启动流程
Android9.0 SystemUI 简介篇 (一) - dinghmcn's blog
修改下拉通知栏尺寸
Android系统定制之SystemUI修改:下拉通知栏尺寸【转】 - 请给我倒杯茶 - 博客园
【Android系统源码修改】Android系统定制之SystemUI修改:下拉通知栏尺寸_Bright的博客-CSDN博客
1. super_status_bar.xml解析
Android P SystemUI之super_status_bar.xml解析_Sunxiaolin2016的博客-CSDN博客
2. status_bar.xml解析
Android P SystemUI之StatusBar UI布局status_bar.xml解析_Sunxiaolin2016的博客-CSDN博客
------------------------SystemServer进程对Notification的处理流程理解 start----------------------------------
## 用户进程创建通知-start
NotificationManager.getSystemService()函数
参考:Android的getSystemService总结和具体使用方法 - 壮汉请留步 - 博客园
NotificationChannel类
参考:NotificationChannel 适配填坑指南 - 简书
功能与应用:https://blog.csdn.net/yh18668197127/article/details/86299290
## 用户进程创建通知-end
SystemServer进程对通知的处理流程中的各节点功能解析(*)
参考:Android 发送通知Framework处理流程_闯荡_脚印-CSDN博客
Notification运行机制
https://blog.csdn.net/silvia0427/article/details/8313396
NotificationListenerService使用详解
NotificationListenerService使用详解_一个炮哥的博客-CSDN博客_notificationlistenerservice
INotificationManager.Stub详解
AIDL,在Stub类中的asInterface函数_浅学误人的博客-CSDN博客
从INotificationManager.enqueueNotificationWithTag到NotificationManagerService类,其中跳转的原理,即aidl中Stub的运行机制
AIDL,在Stub类中的asInterface函数_浅学误人的博客-CSDN博客
------------------------SystemServer进程对Notification的处理流程理解 end----------------------------------
2. 显示流程-SystemServer进程
-----------------------------SystemUI进程对Notification的处理流程理解 start----------------------------------
22 RemoteView的理解
第五章、理解RemoteView_sp不会玩ps-CSDN博客(特别注意apply与reqpply()的使用)
-----------------------------SystemUI进程对Notification的处理流程理解 end-----------------------------------
KeyGuard锁屏界面
隐藏锁屏界面照相机与电话按钮
Android_LockScreen.org · vimchan/ldk - Gitee.com
Keyguard视图布局
参考:android4.4 Keyguard 锁屏之----布局篇_yiersanxuexi的博客-CSDN博客
参考:Android6.0锁屏源码分析之界面布局分析_fanfan-CSDN博客_android 锁屏源码
对布局中的小控件讲的很详细:
Android-Keyguard开发分析(持续...)_伪程序猿的专栏-CSDN博客
KeyGuard滑动解锁流程(锁屏解锁流程结构分析比较清晰)
Android8.1 SystemUI Keyguard之滑动解锁流程_测试0901-1-CSDN博客
Keyguard从SystemServer开始的部分流程(重要)
注:很多教程都没有讲解启动Keyguard服务的部分,这里讲了,作为补充;
KeyguardBouncer启动流程_tj_shenzhendaxue的专栏-CSDN博客
KeyGuard 启动流程分析
Android8.1 SystemUI Keyguard之启动流程_测试0901-1-CSDN博客
Keyguard锁屏原理解析(对视图和相关类的功能解析比较详细)
https://blog.csdn.net/qinjuning/article/details/7505703
KeyGuard解锁流程(较为详细)
Android O(8.0) Keyguard解锁流程 - 程序员大本营
Android解锁屏机制详解
Android4.0开发之Keyguard解锁屏机制详解 - 博客 - 编程圈
Keuguard Pin码解锁流程(对于解锁部分的代码功能讲解比较详细)
下拉菜单结构解析
Android SystemUI之下拉菜单,通知栏,快捷面板(三)_肖岩-CSDN博客
VolumeUI音量界面
VolumeUI流程各函数功能详解(该博主有一个SystemUI专栏)(重要)
VolumeUI(1):MVP框架_renshuguo123723的博客-CSDN博客
Volume流程函数功能解析(对上述博客的一个补充,结合起来理解)(重要)
Android音量调节(二)音量处理及UI刷新_作茧自缚丶的博客-CSDN博客
Volume音量控制原理(原理清晰)
https://www.iteye.com/blog/wx1568444409-2456303
Volume音量键处理流程(对于VolumeUI的前置知识讲解的较为清晰)
Android音量调节(一)音量键的处理流程_作茧自缚丶的博客-CSDN博客_android音量调节流程
修改系统音量条UI(测试成功)
Android 修改系统音量条UI_qq_25094789的博客-CSDN博客_android 音量条
VolumeUI分析
SystemUI之VolumeUI分析 - Android开发 - 找一找教程网
VolumeUI启动流程(几个方法的代码详细分析)
VolumeDialogControllerImpl.java # onVolumeChangedW() (音量界面更新)中使用的AudioManager常量的含义
Android AudioManager探索_无名的一棵小树-CSDN博客
VolumeDialogControllerImpl.java # redister() # setVolumePolicy()(设置音量模式)
AndroidQ 设置静音模式后按音量上键不能调节音量大小_u010869159的博客-CSDN博客
Android音视频(MediaSessionManager)
Android音视频API(android.media.session):概览_一世豁然的专栏-CSDN博客
PowerUI
PowerUI启动流程
PowerUI分析
system ui powerUI_jason的笔记-CSDN博客
PowerUI流程分析(函数内具体含义说明较为详细)
Android9.0 SystemUI PowerUI 篇 (二) - dinghmcn's blog
maybeShowBateryWarning()、PowerNotificationWarnings类