zoukankan      html  css  js  c++  java
  • android 锁屏

    引用:http://blog.csdn.net/kay_wyong/article/details/6631870

    大体的思路:系统启动成功后SystemServer调用wm.systemReady()通知WindowManagerService,进而调用PhoneWindowManager,最终通过LockPatternKeyguardView显示解锁界面。当按Power键时,系统会像向外广播消息Intent.ACTION_SCREEN_OFF, 同样当在锁屏的情况下按Power键会向外广播Intent.ACTION_SCREEN_ON消息,捕捉这些消息是前提。但由于这些检测都需要实时的,所以需要创建一个Service 来负责检测这些。Now, here we go. 

    示例以及实现过程: 
    第一步,创建Service, 创建了MyService.java文件用于创建Servicepublic class MyService extends Service { …} 
    第二步,注册你需要监听的Broadcast Receiver,在这里我们需要检测Intent.ACTION_SCREEN_OFF 和Intent.ACTION_SCREEN_ON消息, 

    private void registerIntentReceivers() 

    Log.d(TAG, "***registerIntentReceivers"); 
    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); 
    filter.addAction("android.intent.action.SCREEN_ON"); 
    LockLisnter receiver = new LockLisnter(); //用于侦听 
    registerReceiver(receiver, filter); 

    在这里可能有个问题,为什么不写在AndroidManifest.xml中呢?这样不是更方便吗?Good question!

    第三步, 在Broarcast Receiver中接收这些广播。 
    public void onReceive(Context context, Intent paramIntent) 
    { if ("android.intent.action.SCREEN_OFF".equals(str)) 

    Log.d(TAG,"***"+str); 
    Log.d(TAG,"***Equal with SCREEN_OFF"); 
    startMainActivity(); //如果是Screen_Off,启动自己的画面 


    虽然在这里当按Power键的时候可以启动自己的Lock画面,但是在自己的启动之后仍然会被系统的覆盖掉。所以就需要把系统的干掉了。 
    第四步,替换系统的LockScreen. 
    KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock mKeyguardLock = mKeyguardManager.newKeyguardLock("Activity1"); 
    mKeyguardLock.disableKeyguard(); 
    其实系统的LockScreen的名字准确的说应该是Keyguard。 
    在这里需要导入其他一些文件: 
    import android.app.KeyguardManager; 
    import android.app.KeyguardManager.KeyguardLock; 
    有了这些资源虽然可以编译通过了,但是当调用到mKeyguardLock.disableKeyguard(); 
    这句的时候就会崩溃,关键的一个原因就是权限的问题,因为要替换系统的 必须的有足够的权限,因此在Manifest.xml中添加: 
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 

    好了,到这里你就可以尽情的Customize系统的Lock Screen吧 

    总结:在替换系统的Lock Screen中大概用到了,Service ,Activity, broadcast Receiver,等知识点,在此不做详细讲解,再次强调,第一. 注册监听系统的有些Broadcast receiver,有时候写在Manifest.xml里是收不到的,第二,替换系统的东西,在很多时候需要增加权限,注意在Manifest文件中增加权限 

  • 相关阅读:
    项目管理--PMBOK 读书笔记(4)【项目整合管理】
    数论(二)
    数论(一)
    Jmeter连接mysql数据库
    minicom工具的使用
    centos7 docker 挂载文件思路
    go语言的init函数
    go操作elasticsearch
    UML交互图
    Linux环境下mysql的安装
  • 原文地址:https://www.cnblogs.com/sode/p/2377895.html
Copyright © 2011-2022 走看看