SystemUI的爱恨情仇
网上都是零零碎碎相关的SystemUI文章,缺少对SystemUI模块功能点的梳理,也很少有大佬去总结SystemUI相关的知识点,如果你经常修改SystemUI相关功能点,此专栏你值得拥有,扫描二维码有惊喜☺
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Rom_Fisher
知识的学习在于一点点的积累!!!
展开
-
SystemUI的通知栏通知的排序
不积跬步无以至千里 最近被提了一个关于通知栏上通知排序的bug,之前就想过我们的通知栏上的顺序是在哪进行排序的?其实为什么呢?因为浸提那应用的同事提了一个设置Setpriority(int value)的方法,结果设置优先级较大了,还是没有排到通知队列的前边,很纳闷,今天就看一下咋回事。 其实通知由NotificationManager创建,然后通过IPC传到了Not...原创 2018-06-06 16:22:50 · 2118 阅读 · 3 评论 -
SystemUI 密码解锁后指纹识别清除次数
不积跬步无以至千里之前也是比较发闷儿,密码解锁后清楚指纹识别的次数是在哪里处理的,今天正好查找一个问题正好发现,记录下来1.调用密码验证流程代码路径:frameworks/base/services/core/java/com/android/server/locksettings/LockSettingsService.java/** * Verify user cr...原创 2019-09-17 15:58:07 · 1234 阅读 · 4 评论 -
SystemUI 关于修改Android7.0 锁屏4种解锁失败等待时间规则
不积跬步无以至千里 本文讲解前三种解锁的实现,指纹由下一篇来讲解。主要需要有两点1、每次都有5次解锁。2、随着尝试次数的增加,时间增长。3、关机重启后仍然能计算时间。(指纹解锁不需要)前摘 修改这4种解锁方式是:Pin码解锁、密码解锁、图案解锁和指纹解锁,修改解锁失败的等待时间?做过SystemUI相关模块都知道解锁这一块的验证密码等等操作一般是...原创 2018-08-22 18:54:54 · 2691 阅读 · 6 评论 -
SystemUI Android7.1禁止锁屏下拉状态栏
不积跬步无以至千里 最近android7.1的项目提了个需求:想要当锁屏的时候,禁止下拉状态栏。当然锁屏这块关于通知栏的逻辑是在SystemUI中(/frameworks/base/package/SystemUI)。 关于锁屏和下拉状态栏都是在NotificationPanelView这块控制着事件的分发和逻辑,因此控制锁屏下拉的逻辑也在这,在这里我们只要把关于锁...原创 2018-06-01 13:52:01 · 8014 阅读 · 4 评论 -
SystemUI 上滑解锁困难容易失败的分析与解决方案
不积跬步无以至千里一.前摘 我们玩手机的经常的一个行为就是亮屏,向上滑动屏幕然后到解锁界面输入密码然后解锁,而今天我们遇到的这个问题就是向上尝试滑动了好几次都没有到锁屏解锁界面,这个问题会让用户非常苦恼,这不是耽误我的时间吗?因此这个问题对用户的产品体验影响还是很大的。因此我们今天就要解决这个问题。二.分析 这里滑动解锁的逻辑在哪呢?通过寻找代码逻...原创 2020-03-31 18:15:57 · 1728 阅读 · 2 评论 -
SystemUI 通知栏动态隐藏、显示某些应用的通知
不积跬步无以至千里一、简介最近有个新需求,关于动态去显示和隐藏某些应用的通知。二、需求分析既然是动态隐藏显示某些应用的通知,因此需要另一提供数据的一方,因为是为了满足另一个应用的关于操作的隐藏与显示需求,因此是“它”来给我提供隐藏应用的的数据,这样就相当于两个应用去完成这个功能,即进程间的一个通讯消息,这样就有如下方案:广播、AIDL、共享数据(ContentRes...原创 2018-11-26 17:52:08 · 2596 阅读 · 0 评论 -
SystemUI 屏蔽原生下拉状态栏的通知区域导致下拉展开高度异常问题
不积跬步无以至千里 1、简叙由于项目需求需要把下拉状态栏中的通知显示部分屏蔽掉,不让其显示出来,由android7.0移植到android8.0,还是按照以前的屏蔽方式,屏蔽掉了原生的通知区域。2、问题发现了如下了,多数情况是挺正常的。如下截图:图一:但是当收到电话、短信等一些特殊通知时,会出现如下截图现象:图二:被测试提出了这样的bug,...原创 2018-09-26 14:26:59 · 2534 阅读 · 0 评论 -
SystemUI 下拉状态栏与收起时顶部状态栏图标的显示与隐藏逻辑
不积跬步无以至千里 这里是常见的一种场景现象,当你下拉状态栏的时候,发现顶不住的状态栏图标消失了,而QuickSettings中的图标出现了;而当你把状态栏下拉的panel收起来时,这时候顶部状态栏的图标又出现了。一.这里就把状态栏的显示隐藏与显示的逻辑在这里说一下1.状态栏下拉顶部状态栏消失,PanelView中QuickSetting上方的图标显示的代码代码路径...原创 2020-03-28 15:55:45 · 2057 阅读 · 2 评论 -
SystemUI 锁屏解锁后去除蒙层(黑黑的一层)
不积跬步无以至千里 这两天要修改一个需求就是去除锁屏解锁后的蒙层(即解开锁后黑黑的蒙蒙的一层),之前就有想处理这个效果,把他去掉但是没有找到位置,这两天又有了这个需求了,解决了,记录一下。其中修改的地方为:/src/com/android/systemui/keyguard/KeyguardViewMediator.javaprivate void tryKeyguardDo...原创 2019-07-01 10:15:27 · 819 阅读 · 0 评论 -
SystemUI android10.0禁止状态栏下拉
不积跬步无以至千里一.前摘 其实这里禁止状态栏的下拉是我们经常遇到的一些功能需求场景,其实前边的场景我们也有写过一篇文章 SystemUI Android7.1禁止锁屏下拉状态栏,而这种修改是处理当处于锁屏第一界面时的禁止状态栏的下拉或者弹出,而其中还有一篇文章说明了怎么平台提供的接口如何禁止状态栏的下拉:https://blog.csdn.net/WDYShowTime...原创 2020-04-18 20:16:07 · 2491 阅读 · 0 评论 -
SystemUI 修改电量低于多少出现低电量通知弹框
不积跬步无以至千里一.前摘 咱们使用手机电量比较低的时候,都会通过在手机顶部上显示一条低电量的悬浮通知来提醒你此时的电池电量不足请注意用电或者及时充电,如下图,原生的系统是电量低于15%则会弹出此弹框,如果你想修改到18%就去提醒用户,那么接下里我们说一下。二.分析这里类也是继承了基础抽象类SystemUI,这里通过广播监听电量变化,然后相当于电量从16变成15...原创 2020-04-11 19:33:07 · 1083 阅读 · 0 评论 -
SystemUI 下拉控制中心,长按通知点击“关闭通知”,点击空白处,再点击“关闭通知”无作用
不积跬步无以至千里一.前摘 这里是android10.0原生的bug,应该是原生系统考虑没那么全面导致此问题,这里出现此问题的原因是原生没有考虑点击窗口的空白位置时出现的逻辑问题。二.问题原因经过对代码的逻辑进行分析发现:这里当点击对话框的空白处或者按back键时未能正常的恢复对话框是否显示的标志位以及重置长按通知的效果导致的此问题,本来此标志位是为防止重复去显...原创 2020-04-05 00:43:47 · 1400 阅读 · 0 评论 -
SystemUI 新增功能“通知亮屏”
不积跬步无以至千里一.前摘 最新项目来了个新需求就是当来新通知的时候需要亮屏,方便直接看到最新的通知,也算合理。二.思考 这里来新通知的情形从逻辑上来说,一是新来了一条通知,二是更新通知。三.修改代码路径:app/src/com/android/systemui/statusbar/NotificationEntryManager.java public NotificationEntryManager(Context context)...原创 2020-06-24 16:37:33 · 667 阅读 · 0 评论 -
SystemUI 优化锁屏解锁界面层叠问题
不积跬步无以至千里一.前摘 其实前边有一篇文章就是解决其中一个情形的此问题(锁屏点击通知解锁界面重叠),而现在又出现了一种情形就是锁屏状态中下拉状态栏点击一些快捷设置中的一些按钮同样会出现解锁界面与第一界面重叠的问题,其实分析与上篇(锁屏点击通知解锁界面重叠)的分析是一样的,都是因为锁屏第一界面在显示解锁界面的时候并没有收起来导致的,因此我们这里就直接上修改的代码了就不再重...原创 2020-04-10 19:31:10 · 790 阅读 · 0 评论 -
SystemUI 如何判断当前界面显示的为全屏界面?
不积跬步无以至千里一.前摘 怎么判断当前的用户处于全屏模式呢?处于全屏模式当中即是状态栏处于沉浸状态,而往往此时用户其实是不想被打扰的。因此可以针对当前如果用户处于全屏模式下,我们做一些勿扰模式的一种行为,类似于当处于全屏模式我们就不再弹出全屏通知等等。二.正文现在我们判断全屏模式肯定是因为状态栏的沉浸式出现的,因此我们就以此为突破口,查看SystemUI的源码中怎么控制状态栏的消失的?代码路径:app/src/com/android/systemui/statu...原创 2020-07-16 18:18:52 · 595 阅读 · 0 评论 -
SystemUI 关于闹钟、来电通知在锁屏与非锁屏状态以及全屏界面的修改
不积跬步无以至千里一.前摘 来电的通知在谷歌原生机器中的逻辑处理是锁屏界面显示来电全屏通知,非锁屏界面显示的是悬浮通知,原创 2020-06-28 12:18:36 · 757 阅读 · 0 评论 -
SystemUI 解密通知如何显示为普通通知,悬浮通知还是全屏通知
不积跬步无以至千里一.前摘 系统来了一条通知,此时通知会有三种方式呈现:普通通知,悬浮通知,全屏通知。普通通知:就会显示在通知栏中,只有通知栏显示的时候才会显示出来。悬浮通知:会直接显示再屏幕的顶部中间通知View。全屏通知:直接显示一个全屏的界面。二.正文我们就从代码逻辑中讲解吧。代码路径如下:/app/src/com/android/systemui/statusbar/NotificationEntryManager.java1.新增通知...原创 2020-06-25 17:32:39 · 819 阅读 · 0 评论 -
SystemUI 指纹解锁或者人脸解锁效果优化
不积跬步无以至千里现象:在平常的项目中有测试提出了对比华为手机等竞品手机,发现有如下两点对比竞品手机中,手机亮屏在锁屏第一屏指纹解锁(或者支持人脸解锁)1.发现解锁会闪一下黑屏2.发现解锁会有一个过渡动画(即一个上移动的动画)分析:其实这里是因为指纹解锁是通过...原创 2020-02-29 23:30:41 · 903 阅读 · 0 评论 -
SystemUI 解密悬浮通知上滑后不显示悬浮通知的原因
不积跬步无以至千里一.前摘 在使用手机时,你会发现来了一条悬浮通知,然后上滑此悬浮通知消失,当你再接收到此悬浮通知时,但是并没有显示悬浮通知,其实细心的能发现过一会就能恢复了。二.正文...原创 2020-06-24 23:40:08 · 944 阅读 · 0 评论 -
SystemUI 应用的通知设置了悬浮通知几秒后消失
不积跬步无以至千里一.前摘 测试这两天提了一个闹钟通知的bug,描述是:闹钟响铃,出现小卡片,等待5S左右,隐藏。而闹钟的同事说它已经设置了闹钟一直显示的属性,以及设置闹钟的fullscreenIntent,让我们SystemUI模块查看是否有问题?二.分析悬浮通知的显示流程简介app/src/com/android/systemui/statusbar/AlertingNotificationManager.java1.显示悬浮通知/** * Cal...原创 2020-05-25 19:00:31 · 698 阅读 · 0 评论 -
SystemUI 人脸识别解锁后指纹消耗次数并没有清除
不积跬步无以至千里一.前摘 android10.0后安卓系统已经开始内部支持人脸识别了,和指纹识别的设计非常相似,归为生物识别技术,但是咱们这里写的问题是android9.0或者之前的问题。因为现在市面上已经好多安卓设备锁屏中已经适配了人脸识别解锁功能,而市面上已经有很多人脸识别的技术了,比如商汤的,face++,还有一些小厂商的等等。 看过一些人脸识别的...原创 2020-03-22 12:29:29 · 608 阅读 · 0 评论 -
SystemUI 锁屏下拉状态栏困难的分析与解决方案
不积跬步无以至千里一.前摘 最新的手机项目上锁屏状态中下拉状态栏虽然已经下拉了很大距离但是状态栏还是会收回去,而且频繁的下拉还是收回去,所以这里是个很不好的体验...原创 2020-04-22 23:35:39 · 569 阅读 · 0 评论 -
SystemUI QuickSettings之手电筒低电量禁止开启
不积跬步无以至千里一.前摘 近期项目有个需求,就是当手机电量低于15%时候,此时QuickSettings中的手电筒功能是不能开启手电筒的,因为此时电量已不够用了,继续使用手电筒就加速了电池电量的消耗,因此这个需求也是合理的。二.修改代码路径:app/src/com/android/systemui/qs/tiles/FlashlightTile.javaimport static android.os.BatteryManager.EXTRA_LEVEL;p...原创 2020-06-24 11:50:24 · 630 阅读 · 0 评论 -
SystemUI 锁屏解锁界面提示语在触碰指纹后消失
不积跬步无以至千里一.前摘原创 2020-06-11 16:02:55 · 392 阅读 · 0 评论 -
SystemUI中新添加Window(屏保)与导航栏交互出现的常见问题
不积跬步无以至千里 最近项目项目里添加了屏保功能,屏保实际为锁屏或者屏幕休眠,出现的一个Window,此用以显示时间与通知的重要信息,并具有省电模式的一个界面。这一块的实现主要是通过添加一个Window,此Window的层级位于锁屏之上,但是又要低于一些系统重要的弹窗Window(比如调节音量、PowerUI重启的等等),因此此处挑选了Window层级为 WindowManager...原创 2018-10-20 16:47:16 · 835 阅读 · 3 评论 -
SystemUI 解决密码输入界面与锁屏界面重复(原生系统同样存在)
不积跬步无以至千里一.前摘 层叠效果如上图,其实我们前边已经写过优化类似的场景文章:优化锁屏解锁界面层叠问题 ,这里是对这种场景的补充。这种场景是点击自定义通知里面的控件有会启动一些Activity这种场景,因为此时在锁屏的状态下,所以需要先去解锁才能启动某些界面,然后这里会导致界面重叠的情形。二.分析与解决 通过在Bouncer界面的show方法中打印调用栈,查到了此调用的逻辑,调用的逻辑如下:app/src/com/android/systemui...原创 2020-05-30 18:05:03 · 552 阅读 · 0 评论 -
SystemUI 去掉锁屏解锁后“应用执行的过渡动画”
不积跬步无以至千里前摘: 测试提了一个bug,说其它各大厂商在解锁时候,应用不会执行解锁后的一个过渡动画,其实这里的过渡动画是原生google版本为了解锁后不太生硬加的一个动画,我这里动画是界面向上弹出的动画(这个界面就是对应着锁屏解锁后展示的那个界面),而我们这里还是google原生的版本。在这里我发现当你通过灭屏幕的指纹解锁的时候是没有动画的。其实逻辑是通过这里控制的,如...原创 2019-12-03 14:36:40 · 1244 阅读 · 0 评论 -
SystemUI 双击Power键启动相机
不积跬步无以至千里一.前摘 有个同事问我双击启动相机的逻辑SystemUI的入口在哪?我因为之前搞过启动相机与人脸识别的冲突问题,所以对这块还是比较了解的。因此记录一下,来告诉对这块比较发闷的童鞋。二.分析 分析就不分析了,直接把我上次的写的文章拿过来,其中的分析在这篇文章有体现,否则再重新写一遍也没有什么意思,你说是不是? 双击power键启动相机的逻辑:https://blog.csdn.net/WDYShowTime/article/...原创 2020-06-01 17:13:03 · 608 阅读 · 0 评论 -
SystemUI 勿扰模式下来电通知栏不显示通知
不积跬步无以至千里一.前摘 当你开启勿扰模式的时候,此刻你肯定不想被打扰,无论是声音还是显示上,那此时的来电通知会怎样呢?毕竟来电通知是一个非常重要的通知,那它是在勿扰模式中怎么被处理的呢?二.正文 其实SystemUI的通知是有一个专门管理通知数据的类NotificationData,这里有对通知是否需要在通知栏中是否显示出来会有过滤的操作。代码路径:app/src/com/android/systemui/statusbar/Notificat...原创 2020-07-24 12:32:26 · 1040 阅读 · 0 评论 -
SystemUI 解锁界面新增返回按钮
不积跬步无以至千里一.前摘查看现在最新的竞品手机你就会发现解锁界面一般不会再显示虚拟按键了,我感觉是感觉此界面更想是全屏界面,不想把布局给到虚拟按钮的布局上,因此这里去掉虚拟按键这个布局显示,自然就需要添加一个返回按钮来代替此功能。二.正文关于这个button怎么布局,以及什么样式我就不说了,因设计而异,这里说一下如果实现这个和虚拟按键一样作用的back键的处理。1.让我们看一下SystemUI本身是怎么处理的,其实就明白了,因为解锁界面属于statusbar,因此我们看一下stat原创 2020-07-15 17:52:39 · 447 阅读 · 0 评论 -
SystemUI 快速搞懂启动流程
SystemUI,系统界面,一个系统级的应用,其中包括了很多功能模块,比如锁屏,状态栏,分屏,音量条,多任务等等,让我们一起看一下它的启动.随着系统的启动通过调用第一个用户空间的init进程调用Zygote进程然后调用SystemServer启动各种系统服务,而我们的SystemUI在其中启动服务中的一项.一.SystemServer中的启动代码路径:frameworks/base/ser...原创 2019-08-23 11:20:11 · 717 阅读 · 0 评论 -
SystemUI 最通俗易懂的SystemBars启动流程
不积跬步无以至千里 SystemBars的启动包含了状态栏与导航栏的启动,是SystemUI中较为重要的一个功能模块,下边说一下它的启动流程. 接着上一次讲的,上次说到每个功能模块都是继承自SystemUI....原创 2019-09-06 14:20:32 · 1186 阅读 · 0 评论 -
SystemUI 密码解锁界面点击屏幕不亮屏
不积跬步无以至千里一.前摘 熟悉SystemUI模块的童鞋应该知道,SystemUI大部分都是window窗口的各大布局,然后出现不同的场景,而这里做的亮屏操作也是自己做的处理,这里测试就提出了一个bug。bug描述如下:在密码解锁界面当屏幕处于半亮屏状态,你去点击非输入密码区域,并不能重新点亮屏幕。二.分析1.怎么点亮屏幕? 通过观察发现SystemUI中各大对应的功能布局都是自己进行处理进行的亮屏操作,SystemUI经常通过如下逻辑实现亮屏。...原创 2020-05-25 20:14:32 · 358 阅读 · 0 评论 -
SystemUI 长按POWER键弹出关机等图标,有时候会抖一下
不积跬步无以至千里如果同样存在此问题,可以参考如下修改,这里废话不多说,直接上才艺。修改如下两处:1.app/res/layout/global_actions_column.xml<!--modify start--><!--android:paddingTop="@dimen/global_actions_top_padding"--><!--android:gravity="top | right"--><!--modify end--原创 2020-05-25 19:30:13 · 445 阅读 · 0 评论 -
SystemUI 灭屏没有声音或者说上锁没有声音
不积跬步无以至千里一.前摘在我们平时使用手机时,在你灭屏上锁或者解锁的时候都会有一个声音提示你当前的上锁状态。但是此时出现了此时的bug:屏幕解锁可以听见解锁的声音,而屏幕灭屏的时候听不见灭屏的声音。二.分析锁屏上锁的声音以及解锁后的解锁声音都是在SystemUI里的功能逻辑,我们看一下代码逻辑。路径如下:app/src/com/android/systemui/key...原创 2020-04-21 16:50:25 · 399 阅读 · 0 评论 -
SystemUI 10.0设置SIM卡锁,重启手机,解SIM卡锁之后点击返回,锁屏界面显示空白
不积跬步无以至千里一.前摘 这个bug是属于在SIM卡解锁的一种情形下产生的,其中的原因有在解锁界面中PIN、Pattern、Password中去掉了导航栏的back键并添加了返回键,其实在自测过程中发现如果不去掉导航栏,也会在这个界面出现的,是偶现出现导航栏,点击back键同样都会出现此问题。这里返回按钮处理是模仿的back键的点击逻辑处理。二.现象与分析其中...原创 2020-04-06 23:34:22 · 589 阅读 · 0 评论 -
SystemUI 锁屏界面显示的充电“还需几小时充满”提示语
不积跬步无以至千里一.前摘 项目说客户有个需求就是把这个充电还有多长时间才能充满的提示语去掉,因为这个多长时间才能充满的时间从底层获取的时候受此时充电的电流的大小会有影响,然后会出现充电剩余时间忽大忽小的现象,因此这里建议去掉。二.正文 这里的锁屏的充电提示语利用的是锁屏第一界面的控件KeyguardIndicationTextView,通过这个控件进行消息的提示,让我们直接上才艺。代码路径如下:app/src/com/android/syste...原创 2020-06-28 18:01:20 · 755 阅读 · 0 评论 -
SystemUI 如何控制锁屏显示多少条通知
不积跬步无以至千里一.前摘 手机屏幕一亮屏就会显示出最新的通知消息,所以咱么可以快速的看到最新的消息,那么是我们看到的消息越多就会越好吗?答案当时是“否”,因为锁屏的通知有敏感与不敏感之分就是安全不安全,因为有些通知不会让直接在锁屏上显示,而且重中之重的是现在市面上的手机上都会在锁屏上做一些运营的东西,在锁屏的背景上做一些壁纸,或者在锁屏靠底的部分会有一些新闻链接,然后就...原创 2020-04-02 00:23:00 · 581 阅读 · 0 评论 -
SystemUI 锁屏点击通知解锁界面重叠(bouncer界面与锁屏第一界面)
不积跬步无以至千里一.前摘 其实这里是原生设计,google认为这样是正常的现象,设计的如此,但是咱们国内呢,考虑的看见界面层叠混乱,这样就感觉体验不好,因此认为需要改善,当然可以看大厂的手机确实都处理此问题,那咱们也处理一下吧。二.分析 这里说一下吧,其实这里会出现层叠主要是因为当点击通知的时候会调起锁屏的二级解锁界面即bouncer界面,而此...原创 2020-03-26 20:43:49 · 908 阅读 · 0 评论 -
SystemUI 锁屏来电界面点击Home键无作用
不积跬步无以至千里一.前摘 其实这里是原生的设计,故意在锁屏的来电界面,不让执行home键的流程(这里应该是启动launcher的主activity),因此这里我们要针对它的逻辑进行修改。二.修改代码路径:app/src/com/android/systemui/statusbar/phone/NavigationBarFragment.javaprivat...原创 2020-03-25 22:48:18 · 244 阅读 · 0 评论