Android 隐藏锁机
Android 按电源键面部解锁或者抬手亮屏以及通过各种手势亮屏面部解锁,为了让用户感受不到解锁的速度快慢,会做一些特殊处理。比如本文要说的隐藏锁机,那什么时候又显示锁机呢?最好是解锁成功后立马显示锁机,同时移除锁机。隐藏锁机的同时需要拦截背光,否则就直接看到桌面了。显示锁机的同时需要释放拦截背光,否则手机就是黑屏的,无法设置背光,带来不好的用户体验。解锁成功后需要移除锁机,否则解锁成功还是看到锁屏,无法进到桌面或正在打开的应用。
下面从代码看看对锁机的相关处理:
public class KeyguardViewMediator extends SystemUI {
...
// used for handler messages
private static final int SHOW = 1; // 显示锁机
private static final int HIDE = 2; // 隐藏锁机
private static final int RESET = 3;
private static final int VERIFY_UNLOCK = 4; // 验证移除锁机
private static final int NOTIFY_FINISHED_GOING_TO_SLEEP = 5;
private static final int NOTIFY_SCREEN_TURNING_ON = 6;
private static final int KEYGUARD_DONE = 7;
private static final int KEYGUARD_DONE_DRAWING = 8;
private static final int SET_OCCLUDED = 9;
private static final int KEYGUARD_TIMEOUT = 10;
private static final int DISMISS = 11; // 使锁机消失
private static final int START_KEYGUARD_EXIT_ANIM = 12;
private static final int KEYGUARD_DONE_PENDING_TIMEOUT = 13;
private static final int NOTIFY_STARTED_WAKING_UP = 14;
private static final int NOTIFY_SCREEN_TURNED_ON = 15;
private static final int NOTIFY_SCREEN_TURNED_OFF = 16;
private static final int NOTIFY_STARTED_GOING_TO_SLEEP = 17;
private static final int SYSTEM_READY = 18;
...
/**
* This handler will be associated with the policy thread, which will also
* be the UI thread of the keyguard. Since the apis of the policy, and therefore
* this class, c