![](https://img-blog.csdnimg.cn/20200722173440971.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
锁屏
SystemUI:Keyguard
SystemUI专属小号
本账号是为了专门写SystemUI相关文章的小号,大号Rom相关文章:https://blog.csdn.net/WDYShowTime
展开
-
SystemUI 解锁界面新增返回按钮
不积跬步无以至千里一.前摘查看现在最新的竞品手机你就会发现解锁界面一般不会再显示虚拟按键了,我感觉是感觉此界面更想是全屏界面,不想把布局给到虚拟按钮的布局上,因此这里去掉虚拟按键这个布局显示,自然就需要添加一个返回按钮来代替此功能。二.正文关于这个button怎么布局,以及什么样式我就不说了,因设计而异,这里说一下如果实现这个和虚拟按键一样作用的back键的处理。1.让我们看一下SystemUI本身是怎么处理的,其实就明白了,因为解锁界面属于statusbar,因此我们看一下stat原创 2020-07-14 17:37:22 · 584 阅读 · 0 评论 -
SystemUI 密码解锁后指纹识别清除次数
不积跬步无以至千里之前也是比较发闷儿,密码解锁后清楚指纹识别的次数是在哪里处理的,今天正好查找一个问题正好发现,记录下来1.调用密码验证流程代码路径:frameworks/base/services/core/java/com/android/server/locksettings/LockSettingsService.java/** * Verify user credential and unlock the user. Fix pattern bug by depre原创 2020-07-06 10:17:47 · 493 阅读 · 0 评论 -
SystemUI 上滑解锁困难容易失败的分析与解决方案
不积跬步无以至千里一.前摘 我们玩手机的经常的一个行为就是亮屏,向上滑动屏幕然后到解锁界面输入密码然后解锁,而今天我们遇到的这个问题就是向上尝试滑动了好几次都没有到锁屏解锁界面,这个问题会让用户非常苦恼,这不是耽误我的时间吗?因此这个问题对用户的产品体验影响还是很大的。因此我们今天就要解决这个问题。二.分析 这里滑动解锁的逻辑在哪呢?通过寻找代码逻辑发现代码逻辑在此处。(如果不想看分析,可以直接看最后的答案☺)1.代码路径如下:app/src/c...原创 2020-07-06 10:18:35 · 718 阅读 · 0 评论 -
SystemUI 关于修改Android7.0 锁屏4种解锁失败等待时间规则
不积跬步无以至千里 本文讲解前三种解锁的实现,指纹由下一篇来讲解。主要需要有两点1、每次都有5次解锁。2、随着尝试次数的增加,时间增长。3、关机重启后仍然能计算时间。(指纹解锁不需要)前摘 修改这4种解锁方式是:Pin码解锁、密码解锁、图案解锁和指纹解锁,修改解锁失败的等待时间?做过SystemUI相关模块都知道解锁这一块的验证密码等等操作一般是通过JNI通过Native做的验证操作,数据获取一般也是涉及到C的逻辑。由于考虑其实系统其他的界面功能上也会...原创 2020-07-06 10:19:33 · 615 阅读 · 0 评论 -
SystemUI Android7.1禁止锁屏下拉状态栏
不积跬步无以至千里 最近android7.1的项目提了个需求:想要当锁屏的时候,禁止下拉状态栏。当然锁屏这块关于通知栏的逻辑是在SystemUI中(/frameworks/base/package/SystemUI)。 关于锁屏和下拉状态栏都是在NotificationPanelView这块控制着事件的分发和逻辑,因此控制锁屏下拉的逻辑也在这,在这里我们只要把关于锁屏状态时,禁止掉状态栏的下拉事件和功能调用的展开逻辑就可以了,因为在锁屏界面下拉的是Quick_Settin...原创 2020-07-06 10:20:01 · 715 阅读 · 0 评论 -
SystemUI 用一张图理解了人脸与指纹,密码解锁的关系
不积跬步无以至千里原创 2020-07-09 09:55:24 · 304 阅读 · 0 评论 -
SystemUI KeyguardBouncer的加载
不积跬步无以至千里Bouncer界面就是安全解锁界面,绘制在statusbar的window上.一.keyguardbouncer在statusbar布局上添加,移除:1.code/app/src/com/android/systemui/statusbar/phone/StatusBar.javaprotected void startKeyguard() {...mStatusBarKeyguardViewManager = keyguardViewMediator.registerSta原创 2020-07-05 12:14:14 · 656 阅读 · 0 评论 -
SystemUI KeyguardBouncer的消失
不积跬步无以至千里前摘:KeyguardBouncer界面即为安全解锁界面,Bouncer界面原生是有5中解锁方式,分为PIN码,图案,复杂密码,SIM卡PIN码,SIM卡PUK码.上一节说了Bouncer界面的加载,现在说一下Bouncer界面是怎么消失的,Bouncer界面的消失,一般为咱们正常的输入正确的密码然后消失,来大家一起看一下.文件路径如下:app/src/com/android/keyguard/KeyguardPINView.java PIN码界面KeyguardPass原创 2020-07-05 12:12:56 · 355 阅读 · 0 评论 -
SystemUI 修改滑动解锁不显示敏感通知并且没有隐藏敏感内容
不积跬步无以至千里 其中原生设计上是滑动解锁和密码解锁是有区别的,滑动解锁不是安全模式,因此是可以显示一些锁屏通知,并且当前模式下也就可以显示一些敏感通知了. 1.滑动解锁隐藏敏感通知①.这里是在NotificationData中shouldFilterOut调用这里用它来进行过滤是否安全模式是否显示/** * @return true if this notification should NOT be shown right now ...原创 2020-07-09 09:55:36 · 302 阅读 · 0 评论 -
SystemUI 去掉锁屏解锁后“应用执行的过渡动画”
不积跬步无以至千里前摘: 测试提了一个bug,说其它各大厂商在解锁时候,应用不会执行解锁后的一个过渡动画,其实这里的过渡动画是原生google版本为了解锁后不太生硬加的一个动画,我这里动画是界面向上弹出的动画(这个界面就是对应着锁屏解锁后展示的那个界面),而我们这里还是google原生的版本。在这里我发现当你通过灭屏幕的指纹解锁的时候是没有动画的。其实逻辑是通过这里控制的,如下代码逻辑:代码路径:KeyguardViewMediator.javaprivate fi...原创 2020-07-07 10:06:47 · 1124 阅读 · 0 评论 -
SystemUI 人脸识别与相机冲突的整理文档
不积跬步无以至千里前摘: 关于SystemUI中添加了人脸识别功能后,引发了一个与原生逻辑冲突的问题就是"人脸与相机冲突的问题“。原因: 因为人脸识别的触发条件多为亮屏的时候,这里引起冲突的主要原因是此刻正在进行人脸识别会使用到相机资源,咱们在锁屏的时候会有两种启动相机的方式,如果当前正在人脸识别,此时你没有停止原创 2020-07-05 12:09:35 · 347 阅读 · 0 评论 -
SystemUI 锁屏设置偏好消息不能显示正常显示,重启手机恢复
不积跬步无以至千里前摘:测试此问题,描述:设置,安全隐私,锁屏时的偏好设置,首次在锁定屏幕消息输入内容,灭屏亮屏,锁屏界面无显示内容,开关机恢复分析:通过查看代码发现本身显示此消息的View是owner_info,此控件本身是View.GONE的状态,要想显示出来,需要通过updateDark(),就是通过主题的切换,或者通过初始化流程也可以,对其控件的Visible属性进行更改。解决办法:通过在触发锁屏显示的逻辑中有个更新owner_info的显示内容,updateOwne原创 2020-07-08 10:03:33 · 210 阅读 · 0 评论 -
SystemUI 解决使用混合密码解锁时人脸或指纹解锁时会弹输入弹框
不积跬步无以至千里一.前摘: 这里存在此bug,会有两个现象(都是在为混合密码解锁): 1.在锁屏的第一界面,进行人脸或者指纹解锁时,会显示弹出了输入法的密码框的现象,看起来怪怪的 2.在锁屏的第一界面,跳转到其他的可以在锁屏之上的界面时(即Activity,此时为Occluded状态),也会出现弹起输入法的弹框的现象,看起来很下饭二.分析: 这里其实都是弹出输入法的弹框非正常的弹出导致的此问题三.解决: 通过追踪代码发现是此处的代码被调用的太...原创 2020-07-08 10:03:14 · 446 阅读 · 0 评论 -
SystemUI 锁屏来电界面点击Home键无作用
不积跬步无以至千里一.前摘 其实这里是原生的设计,故意在锁屏的来电界面,不让执行home键的流程(这里应该是启动launcher的主activity),因此这里我们要针对它的逻辑进行修改。二.修改代码路径:app/src/com/android/systemui/statusbar/phone/NavigationBarFragment.javaprivate boolean onHomeTouch(View v, MotionEvent event) { ...原创 2020-07-07 09:59:21 · 218 阅读 · 0 评论 -
SystemUI 锁屏点击通知解锁界面重叠(bouncer界面与锁屏第一界面)
不积跬步无以至千里一.前摘 其实这里是原生设计,google认为这样是正常的现象,设计的如此,但是咱们国内呢,考虑的看见界面层叠混乱,这样就感觉体验不好,因此认为需要改善,当然可以看大厂的手机确实都处理此问题,那咱们也处理一下吧。二.分析 这里说一下吧,其实这里会出现层叠主要是因为当点击通知的时候会调起锁屏的二级解锁界面即bouncer界面,而此时Bouncer界面又是透明背景,如果是帧布局的话,上一个布局的背景是透明的当然就会看到下一层了啊,所以这里...原创 2020-07-07 10:01:05 · 712 阅读 · 0 评论 -
SystemUI 如何控制锁屏显示多少条通知
不积跬步无以至千里一.前摘 手机屏幕一亮屏就会显示出最新的通知消息,所以咱么可以快速的看到最新的消息,那么是我们看到的消息越多就会越好吗?答案当时是“否”,因为锁屏的通知有敏感与不敏感之分就是安全不安全,因为有些通知不会让直接在锁屏上显示,而且重中之重的是现在市面上的手机上都会在锁屏上做一些运营的东西,在锁屏的背景上做一些壁纸,或者在锁屏靠底的部分会有一些新闻链接,然后就会利用这里进行广告运营的收益,因此我们这里要根据自己屏幕大小以及屏幕的运营排布,来控制我们锁屏的通知的布局的...原创 2020-07-07 10:01:42 · 412 阅读 · 0 评论 -
SystemUI 10.0设置SIM卡锁,重启手机,解SIM卡锁之后点击返回,锁屏界面显示空白
不积跬步无以至千里一.前摘 这个bug是属于在SIM卡解锁的一种情形下产生的,其中的原因有在解锁界面中PIN、Pattern、Password中去掉了导航栏的back键并添加了返回键,其实在自测过程中发现如果不去掉导航栏,也会在这个界面出现的,是偶现出现导航栏,点击back键同样都会出现此问题。这里返回按钮处理是模仿的back键的点击逻辑处理。二.现象与分析其中一种解锁界面的如图所示:在这个界面做了处理,把导航栏去掉了而用“返回”按钮来代替此作用,而我们“返回...原创 2020-07-08 10:03:55 · 864 阅读 · 0 评论 -
SystemUI 人脸识别解锁后指纹消耗次数并没有清楚
不积跬步无以至千里一.前摘 android10.0后安卓系统已经开始内部支持人脸识别了,和指纹识别的设计非常相似,归为生物识别技术,但是咱们这里写的问题是android9.0或者之前的问题。因为现在市面上已经好多安卓设备锁屏中已经适配了人脸识别解锁功能,而市面上已经有很多人脸识别的技术了,比如商汤的,face++,还有一些小厂商的等等。 看过一些人脸识别的处理,发现他们在人脸识别解锁后,并没有处理这一种情况,当你此时锁屏也开启了指纹识别与人脸识别功能,而你在人...原创 2020-07-07 10:08:36 · 327 阅读 · 0 评论 -
SystemUI 指纹解锁或者人脸解锁效果优化
不积跬步无以至千里一.现象:在平常的项目中有测试提出了对比华为手机等竞品手机,发现有如下两点对比竞品手机中,手机亮屏在锁屏第一屏指纹解锁(或者支持人脸解锁)1.发现解锁会闪一下黑屏2.发现解锁会有一个过渡动画(即一个上移动的动画)二.分析:其实这里是因为指纹解锁是在锁屏的第一界面的时候解锁会执行第一界面的上移的动画,并且显示出Bouncer界面即解锁界面。看一下指纹成功解锁的逻辑:1.指纹注册监听验证结果的回调在此类中,其与Frameworks通信/app/src原创 2020-07-08 10:01:43 · 492 阅读 · 0 评论 -
SystemUI 优化锁屏解锁界面层叠问题
不积跬步无以至千里一.前摘 其实前边有一篇文章就是解决其中一个情形的此问题(锁屏点击通知解锁界面重叠),而现在又出现了一种情形就是锁屏状态中下拉状态栏点击一些快捷设置中的一些按钮同样会出现解锁界面与第一界面重叠的问题,其实分析与上篇(锁屏点击通知解锁界面重叠)的分析是一样的,都是因为锁屏第一界面在显示解锁界面的时候并没有收起来导致的,因此我们这里就直接上修改的代码了就不再重复的分析了,因为这里重叠本身其实都是google原生逻辑。二.解决修改代码路径如下:app/sr...原创 2020-07-07 10:09:01 · 594 阅读 · 2 评论 -
SystemUI 灭屏没有声音或者说上锁没有声音
不积跬步无以至千里一.前摘在我们平时使用手机时,在你灭屏上锁或者解锁的时候都会有一个声音提示你当前的上锁状态。但是此时出现了此时的bug:屏幕解锁可以听见解锁的声音,而屏幕灭屏的时候听不见灭屏的声音。二.分析锁屏上锁的声音以及解锁后的解锁声音都是在SystemUI里的功能逻辑,我们看一下代码逻辑。路径如下:app/src/com/android/systemui/keyguard/KeyguardViewMediator.java1.灭屏上锁的声音:/**原创 2020-07-08 10:02:22 · 345 阅读 · 0 评论 -
SystemUI 锁屏下拉状态栏困难的分析与解决方案
不积跬步无以至千里一.前摘 最新的手机项目上锁屏状态中下拉状态栏虽然已经下拉了很大距离但是状态栏还是会收回去,而且频繁的下拉还是弹回去,所以这里是个很不好的体验。我这里是安装自己公司的壁纸锁屏后出现的此问题,仅供参考。二.分析 其实这里出现这种情形应该和上一篇博客上滑解锁困难容易失败的分析与解决方案,他们的原因是一样,详情可以看一下上一篇文章。 这里我们说一下状态栏的下拉展开怎么控制的?代码路径:app/src/com/and...原创 2020-07-07 10:08:11 · 602 阅读 · 0 评论 -
SystemUI 锁屏解锁后去除蒙层(黑黑的一层)
不积跬步无以至千里 这两天要修改一个需求就是去除锁屏解锁后的蒙层(即解开锁后黑黑的蒙蒙的一层),之前就有想处理这个效果,把他去掉但是没有找到位置,这两天又有了这个需求了,解决了,记录一下。其中修改的地方为:/src/com/android/systemui/keyguard/KeyguardViewMediator.javaprivate void tryKeyguardDone() { if (KeyguardConstants.DEBUG_KEYGUARD_PR...原创 2020-07-06 10:24:21 · 466 阅读 · 0 评论 -
SystemUI 密码解锁界面点击屏幕不亮屏
不积跬步无以至千里一.前摘 熟悉SystemUI模块的童鞋应该知道,SystemUI大部分都是window窗口的各大布局,然后出现不同的场景,而这里做的亮屏操作也是自己做的处理,这里测试就提出了一个bug。bug描述如下:在密码解锁界面当屏幕处于半亮屏状态,你去点击非输入密码区域,并不能重新点亮屏幕。二.分析1.怎么点亮屏幕? 通过观察发现SystemUI中各大对应的功能布局都是自己进行处理进行的亮屏操作,SystemUI经常通过如下逻辑实现亮屏。...原创 2020-07-08 10:03:00 · 343 阅读 · 0 评论 -
SystemUI 解决密码输入界面与锁屏界面重复(原生系统同样存在)
不积跬步无以至千里一.前摘 层叠效果如上图,其实我们前边已经写过优化类似的场景文章:优化锁屏解锁界面层叠问题 ,这里是对这种场景的补充。这种场景是点击自定义通知里面的控件有会通过通知直接做一些快捷操作的功能(比如快捷的回复一些消息等场景),通知做的这类自定义通知,因为此时在锁屏的状态下,所以需要先会调起Bouncer界面解锁后才能处理此快捷功能,然后这里会导致界面重叠的情形。二.分析与解决 通过在Bouncer界面的show方法中打印调用栈,查到了此调...原创 2020-07-05 10:41:53 · 532 阅读 · 0 评论 -
SystemUI 双击Power键启动相机
不积跬步无以至千里一.前摘 有个同事问我双击启动相机的逻辑SystemUI的入口在哪?我因为之前搞过启动相机与人脸识别的冲突问题,所以对这块还是比较了解的。因此记录一下,来告诉对这块比较发闷的童鞋。二.分析 分析就不分析了,直接把我上次的写的文章拿过来,其中的分析在这篇文章有体现,否则再重新写一遍也没有什么意思,你说是不是? 双击power键启动相机的逻辑:https://blog.csdn.net/WDYShowTime/articl...原创 2020-07-05 10:38:42 · 741 阅读 · 0 评论 -
SystemUI中新添加Window(屏保)与导航栏交互出现的常见问题
不积跬步无以至千里最近项目项目里添加了屏保功能,屏保实际为锁屏或者屏幕休眠,出现的一个Window,此用以显示时间与通知的重要信息,并具有省电模式的一个界面。这一块的实现主要是通过添加一个Window,此Window的层级位于锁屏之上,但是又要低于一些系统重要的弹窗Window(比如调节音量、PowerUI重启的等等),因此此处挑选了Window层级为 WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL,但是其层级是低于导航栏的等级的 Win...原创 2020-07-05 10:35:34 · 344 阅读 · 0 评论 -
SystemUI 锁屏解锁界面提示语在触碰指纹后消失
不积跬步无以至千里一.前摘 测试提了如下一个bug: 怎么解锁界面的提示语没了呢?而且确实是触摸指纹感应器都会清楚提示语。二.分析 通过打印提示语控件 KeyguardMessageArea的方法setMessage的调用栈,发现其中的调用是通过如下代码逻辑:app/src/com/android/keyguard/KeyguardAbsKeyInputView.java@Override public boole...原创 2020-07-05 10:32:57 · 281 阅读 · 0 评论 -
SystemUI 锁屏界面显示的充电“还需几小时充满”提示语
不积跬步无以至千里一.前摘 项目说客户有个需求就是把这个充电还有多长时间才能充满的提示语去掉,因为这个多长时间才能充满的时间从底层获取的时候受此时充电的电流的大小会有影响,然后会出现充电剩余时间忽大忽小的现象,因此这里建议去掉。二.正文 这里的锁屏的充电提示语利用的是锁屏第一界面的控件KeyguardIndicationTextView,通过这个控件进行消息的提示,让我们直接上才艺。代码路径如下:app/src/com/android/syste...原创 2020-07-05 10:12:11 · 2028 阅读 · 0 评论