1. 创建Service,注册Broadcast Receiver 监听Intent.ACTION_SCREEN_OFF 和Intent.ACTION_SCREEN_ON消息。
当按Power键时,系统会像向外广播消息Intent.ACTION_SCREEN_OFF, 同样当在锁屏的情况下按Power键会向外广播Intent.ACTION_SCREEN_ON消息。我们要做的就是当监听到
Intent.ACTION_SCREEN_OFF,启动我们自己的lockscreen界面(activity)。
2. 屏蔽系统的LockScreen
其实系统的LockScreen的就是Keyguard,我们只要在启动service时,调用
KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock mKeyguardLock = mKeyguardManager.newKeyguardLock("Activity1");
mKeyguardLock.disableKeyguard();
3. 另外,lockscreen界面(activity),我们只需要把所有的按键消息屏蔽掉。并在上面添加我们需要的内容即可。
但有几个问题是目前无法解决的
1. 重启机器,刚刚开机时,原生的锁屏界面会暂时弹出来,这是因为这个action是系统发出来的,
而此时我自己的service还没有start。待我的service启动之后,随之会把它屏蔽掉。
2. Notification可以被拉下来
3. 按Home键会解锁,这个问题是只有GALAXY手机上会出现,其它设备上没有这个问题,可能是GALAXY对其做了改动。