美文网首页Android开发
四、理解Android锁屏机制

四、理解Android锁屏机制

作者: 唔笛plk | 来源:发表于2019-08-09 16:47 被阅读0次

    一、锁屏页的本质

    锁屏界面其实也是一个Activity,只不过在该Activity上,屏蔽了Home键及Back键的响应,只有当用户解锁的时候才可以进入下一个界面,一般是Launcher界面。当然用户解锁的方式可以是滑动解锁,可以是密码解锁,完全在于自己对该锁屏界面的设计,同样可以像市场上很多锁屏软件一样,可以加入一些有用的小玩意儿,比如天气预报、时钟、新闻等,因为这就是一个Activity,就像平时我们设计界面内容一样,理论上可以随意设计,当然也要符合锁屏页的原则,尽量简洁美观易用

    二、实现原理

    • 上有两种实现方式,一种是定制源代码;另一种就是在应用层开发一个锁屏程序。除非特别需要,一般我们都是自己开发一个锁屏程序。
    • 如果自己开发一个锁屏程序,一般是这样做的:
      (1)系统在按下电源键关闭屏幕或点亮屏幕时会发出相应的广播,如Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON,所以我们就可以注册一个BroadcastReceiver来接收这些广播,应当注意这些广播都是受保护的,是由系统负责发送的。
      (2)当接收到这些广播消息,我们就可以启动锁屏页Activity,这样就显示出锁屏界面效果了。
      (3)在锁屏页上进行解锁,然后finish掉该锁屏界面,实现解锁效果。这里的要点和难点是屏蔽掉Home键和Back键。

    三、技术要点

    (1)屏蔽Back键
    Back键比较容易屏蔽掉,重写onKeyDown或onBackPressed方法即可,几乎在所有Android版本上都是可以用的(并未亲自测试所有版本,测了几个版本并未遇到无效的情况)。
    (2)屏蔽Home键
    再来说屏蔽Home键,这个算是一个难点了。其实可以试想一下,如果运行了一个APP,当Back键和Home键被屏蔽掉,那么这个程序是无法退出的,如果再是一个流氓软件,这是多么恶心的用户体验啊!除非你是一个很正规的锁屏软件,否则不建议屏蔽掉Home键。
    Android4.0版本之前还是可以找到方法屏蔽Home键的,但是4.0之后则不再允许屏蔽Home键了,或许Google也是从安全性和用户体验的角度考虑,Home键的响应直接在FrameWork层就处理了,而不会再传到application层来处理。当然网上也看到有方法侦听到Home键,但是监听归监听,但你无法屏蔽它。也就是说4.0之后,当按下Home键时,系统默认会响应启动Home页,也就是Launcher桌面,我们在应用层没有办法再屏蔽它。当然你可以修改FrameWork层代码,重新定制,这属于第一种实现方式了,不在此文的探讨范围。

    四、具体实现

    • A.重写以下两个方法
    @Override  
    public boolean onKeyDown(int keyCode, KeyEvent event) {  
        if(KeyEvent.KEYCODE_HOME==keyCode){  
            return true;  
        }  
        return super.onKeyDown(keyCode, event);  
    }  
    @Override  
     public void onAttachedToWindow(){  
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);  
        super.onAttachedToWindow();  
     }  
    

    相关文章

      网友评论

        本文标题:四、理解Android锁屏机制

        本文链接:https://www.haomeiwen.com/subject/snvhjctx.html