android锁屏原理(一) – 老牛比 – CSDN博客

来源: android锁屏原理(一) – 老牛比 – CSDN博客

最近忙着跳槽,跑来移动后的第一个项目就是做Android定制的锁屏模块。目前已经差不多了,就缺UI工程师的图片了。在这里给大家讲讲我做的这个。先画张图吧

 

不知道大家看了这图恶心不,反正我恶心了,呵呵。还是回正题吧

首先从左边看吧,由上而下。1,第一个ScreenReceiver是作为锁屏的入口。接收系统开机和屏幕关闭开启广播,根据设置中保存是否可以锁屏来启动锁屏服务。

2,ScreenService作为锁屏程序中的核心类,启动后注册接收屏幕开/关广播,分别处理对应的任务。其次是对手机状态的监听,就是那个电话的三状态,空闲、响铃、挂起(接听),分别处理。处理闹钟什么的,都一样。呵呵,不在阐述。最后是处理一些锁屏的初始化数据。

3,ScreenActiviy,这个类命名有点2,估计会误导他人。作用很简单,被锁屏服务调用后启动,然后在这个Activity中处理要显示哪个主题的锁屏,就是调用哪个LockScreenActivity。相当于一个控制器(Controller)吧。

4,LockScreenActivity,就是我们手机在锁屏后看到的那个界面。这里的话就要看你怎么处理啦。就是要处理一些解锁动作啊,时间啊,日期啊,电量什么的。这个类代码比较多。后边我会贴上。上个图体现啊,别笑话,目前没图片,随便上网了拔下一些。

很烂吧,哈哈

5,LockTamplateActivity,这个类是是LockScreenActivity的基类(模板类)。没啥,就一些唧唧哇哇的东西,不过还提供了一些给子类的公共方法。还有就是负责屏蔽Home键,回退键,搜索键,菜单,还有状态栏。

6,LockConstants,看名字就知道干嘛了,一个常量类嘛,一些数据的存放,初始化什么的。保存方式是用SharedPreferences。

7,LockSettingActivity嘛,就是设置一些锁屏的功能的,保存还是SharedPreferences。

基本思路:毫无疑问,每次需要显示LockScreen—锁屏界面时,我们并不真正的去锁屏,而只是提供了一个空的方法去给系统调用,让系统觉得我们“锁屏”了,同样也不去真正的隐藏“锁屏”界面,提供一个空壳给系统调用。由于可能涉及 到其它问题,例如:能否下拉状态栏,按下POWER键后,屏幕很快休眠等。Come on ,我们需要统一做处理。——引用一前辈的话

好了,下一篇我会讲讲每个木块的实现。

分享到: 更多 (0)