Android4.4 Keyguard

这阵子由于 Android KK开机按power键不能灭屏,须过会儿才能灭屏 问题看了下KK Keyguard代码,KK版本的Keyguard已独立为一个Keyguard.apk,具体流程分析,早就有大神BLOG;

http://blog.csdn.net/aaa2832/article/details/22181505  流程分析得很详细,准确,清晰;

http://blog.csdn.net/zhubin215130/article/details/26371531 对上面BLOG的补充和整个Keyguard类之间的关系;

学到的东西:

1,开始接触Policy,以前总是觉得为什么要有这个?虽然现在也不是很理解;

2,PWM由WMS派生,处理phone顶层逻辑,像横竖屏,Status Bar、Navigation Bar,特殊按键事件的拦截和分发(interceptKeyBeforeDispatching()和interceptKeyBeforeQueueing()),锁屏时间等;

3,由KeyguardService.java服务类作为模块入口,服务类通过实例化了一个IKeyguardService.Stub供其他类bindservice时调用,也不用做任何处理,交由后面的Keyguard核心类处理;

4,以上都是为系统调用,每一个模块都要对外留接口,KeyguardManager.java(/frameworks/base/core/java/android/app/KeyguardManager.java)就是Keyguard对外的接口,由源码注释可知第三方应用可以调用此类lock and unlock,对外的方法为disableKeyguard()和reenableKeyguard();

1 /**
2  * Class that can be used to lock and unlock the keyboard. Get an instance of this
3  * class by calling {@link android.content.Context#getSystemService(java.lang.String)}
4  * with argument {@link android.content.Context#KEYGUARD_SERVICE}. The
5  * actual class to control the keyboard locking is
6  * {@link android.app.KeyguardManager.KeyguardLock}.
7  */

5,Keyguard模块逻辑助理类主要为KeyguardViewMediator.java,KeyguardViewManager.java和KeyguardHostView.java,一切事务处理都要经过这些类的调度,处理,显示;

时间: 2024-10-13 20:41:57

Android4.4 Keyguard的相关文章

android4.4的Keyguard心得

在总结锁屏代码之前,有两个中心思想要铭记于心 A) KeyguardHostView就是我们最终所要展示的界面,所以不论用什么方法手段,都要将这个KeyguardHostView添加到窗口中,后续填充它,都是细节问题 B) 那么问题来了,通常我们将一个view添加到窗口中会用什么方法呢? 答案有两种 1 WindowManager.addView()  2 LayoutInflater.inflate(resID, parentView, true): 而在锁屏代码中这两种方法都有用到 ----

Android4.0(Phone)拨号启动过程分析(二)

接上:Android4.0(Phone)拨号启动过程分析(一) InCallScreen处理来电和拨号的界面,接通电话也是这个界面,接下来分析InCallScreen类是如何处理拨号流程的: @Override protected void onCreate(Bundle icicle) { Log.i(LOG_TAG, "onCreate()... this = " + this); Profiler.callScreenOnCreate(); super.onCreate(icic

解决:Android4.3锁屏界面Emergency calls only - China Unicom与EMERGENCY CALL语义反复

从图片中我们能够看到,这里在语义上有一定的反复,当然这是谷歌的原始设计.这个问题在博客上进行共享从表面上来看着实没有什么太大的意义,只是因为Android4.3在锁屏功能上比起老版本号做了非常大的修改,并且通过常规方法(Strings.xml中字符串)对该问题的定位会有非常大的难度,拿这个界面来说,EMERGENCY CALL并非Strings中值,而是  <string name="lockscreen_emergency_call">Emergency call<

解决:Android4.3锁屏界面Emergency calls only - China Unicom与EMERGENCY CALL语义重复

从图片中我们可以看到,这里在语义上有一定的重复,当然这是谷歌的原始设计.这个问题在博客上进行共享从表面上来看着实没有什么太大的意义,不过由于Android4.3在锁屏功能上比起老版本做了很大的改动,而且通过常规方法(Strings.xml中字符串)对该问题的定位会有很大的难度,拿这个界面来说,EMERGENCY CALL并不是Strings中值,而是  <string name="lockscreen_emergency_call">Emergency call</s

android4.4系统永不锁屏

android4.4\frameworks\base\packages\Keyguard\src\com\android\keyguard\KeyguardViewMediator.java /** * External apps (like the phone app) can tell us to disable the keygaurd. */ private boolean mExternallyEnabled = false;//系统此属性默认是true,本类把所有的mExternal

Android框架浅析之锁屏(Keyguard)机制原理

最近终于成功的摆脱了FM收音机,迈向了新的模块:锁屏.状态栏.Launcher---姑且称之为"IDLE"小组,或许叫手机 美容小组,要是能施展下周星星同学的还我漂漂拳,岂不快哉. OK,闲话打住,咱开始正文. 本文主要内容: 1.分析锁屏界面的组成 : 2.基于源代码分析锁屏相关类 : 3.提出一种在框架取消锁屏的方法 . 花了一些时间研究Android原生的锁屏框架---Keyguard,今天就慢慢的讲解下我自己对这个模块的总结,因为目前还处于 理论学习的状况,很多细节以及功能上的

Android4.4的zygote进程(下)

3.2.4启动Android系统服务——startSystemServer() 接下来就是启动Android的重头戏了,此时ZygoteInit的main()函数会调用startSystemServer(),该函数用于启动整个Android系统的系统服务.其大体做法是先fork一个子进程,然后在子进程中做一些初始化动作,继而执行SystemServer类的main()静态函数.需要注意的是,startSystemServer()并不是在函数体内直接调用Java类的main()函数的,而是通过抛异

QT210 android2.3 和android4.0 烧写编译日记

QT210下载烧录编译android2.3过程 工作环境:ubuntu12.04.5 | QT210开发板光盘 | QT210开发板 android2.3编译环境:gcc version 4.4.7  | java version 6 | java version 5 | git version 1.7.9.5 tips by chsry:浅灰色是终端窗口运行保存的部分命令和信息,ubuntu14.04无法编译QT210 android2.3(无法安装java6) 安装好ubuntu12.04.

Android4.4 Framework分析——Activity窗口的创建过程(一)

学习android的窗口模块一周多了,感觉自己对这个模块的理解还是比较模糊,先把get的知识点记录一下. 下图是学习过程记录的activity窗口启动过程序列图,没有或者没办法完整的描绘出来,整个过程比较复杂: 整个学习过程中是参照老罗的android之旅博客和<深入理解android内核设计思想>一书来辅助的,非常感谢前辈. Activity的整体启动过程可查看Android4.4 framework分析--Launcher中启动应用程序(startActivity)的过程的序列图,本文关注