`

添加屏保解锁功能

 
阅读更多
[size=x-large]1. 系统设置,执行LockPatternUtils save密码等屏保参数
2.framework/core/packages/SystemUI com.android.systemui.keyguard  这个类总的处理那个屏幕显示的逻辑
3.存储屏保的代码在framework/core/packages/Keyguard  这个app里面定义了各种UI,根据之前保存的屏保类型,来加载







    private void showBouncerOrKeyguard() { 
        if (DEBUG) Log.d(TAG, "showBouncerOrKeyguard() is called.") ; 
     
        if (mBouncer.needsFullscreenBouncer()) { 
            if (DEBUG) { 
                Log.d(TAG, "needsFullscreenBouncer() is true, show \"Bouncer\" view directly."); 
            } 
            // The keyguard might be showing (already). So we need to hide it. 
            mPhoneStatusBar.hideKeyguard();//需要使用Bouncer隐藏keyguard 
            mBouncer.show(true /* resetSecuritySelection */);//显示Bouncer 
        } else { 
            if (DEBUG) { 
                Log.d(TAG, "needsFullscreenBouncer() is false," 
                    + "show \"Notification Keyguard\" view."); 
            } 
            mPhoneStatusBar.showKeyguard();//滑屏解锁 
            mBouncer.hide(false /* destroyView */); 
            mBouncer.prepare(); 
        } 
    } 



显示流程-》showSecurityScreen-》getSecurityView-》getSecurityViewIdForMode-》







1.SecuritySettings->获取安全模式布局文件(getResIdForLockUnlockScreen),如果没有设置任何密码则加载security_settings_chooser ,如果是已经设置了密码锁则加载security_settings_password

2.onPreferenceTreeClick 触发进去的设置部分,进入com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment

3.ChooseLockGenericFragment  没有设置密码,则直接加载security_settings_picker选择任意加密方式,如果已经设置了密码,那么进入ConfirmLockPassword,确认输入后,再回来,如果没有设置过密码,如选择密码方式,那么跳转ChooseLockPassword 输入密码,保存到系统



#####system ui and keyguard unlock prograss############################

password unlock----->

KeyguardPasswordView->onEditorAction()->verifyPasswordAndUnlock()->

KeyguardSecurityContainer
KeyguardSecurityContainer->KeyguardSecurityCallback mCallback ->reportUnlockAttempt,
mSecurityCallback.dismiss(authenticated); ->mCallback->

SecurityCallback->dismiss(authenticated);


KeyguardViewBase->public boolean dismiss(boolean authenticated)

KeyguardSecurityContainer->showNextSecurityScreenOrFinish

KeyguardViewBase->mViewMediatorCallback.updateNavbarStatus() ;


mViewMediatorCallback.keyguardDone(true);  mViewMediatorCallback.updateNavbarStatus

-->system ui  --->
ViewMediatorCallback mViewMediatorCallback
keyguardDone(authenticated, true);    updateNavbarStatus() ;





PhoneStatusBar->KeyguardViewMediator mKeyguardViewMediatorCallback 这是交互的关键所在keyguard和system ui的交互

[/size]
分享到:
评论

相关推荐

    C#制作屏幕保护程序 两种解锁方式 高端技术--实现软键盘输入

    - 测试屏幕保护程序的运行和解锁功能,确保其在不同环境下都能正常工作。 - 将项目打包成安装程序,这样用户可以方便地安装和配置屏幕保护程序。 总结,通过C#开发屏幕保护程序并实现软键盘输入解锁,不仅可以...

    android简单锁屏解锁功能

    在Android系统中,锁屏和解锁功能是用户体验的重要组成部分,为用户提供安全的设备保护。本教程将探讨如何实现一个简单的九宫格锁屏解锁功能,包括设置和更改解锁密码,并将其保存。 首先,我们需要理解Android的...

    基于qt5.14.2 qml实现锁屏以及解锁

    在本文中,我们将深入探讨如何使用Qt 5.14.2和QML技术来实现一个功能完备的锁屏及解锁界面。Qt是一个强大的跨平台应用程序开发框架,支持多种编程语言,包括C++和QML。QML是Qt提供的一种声明式语言,用于构建用户...

    微信小程序代码-手势解锁功能开发.zip

    在这个"微信小程序代码-手势解锁功能开发.zip"压缩包中,包含的是一个实现了手势解锁功能的小程序模板。手势解锁是用户通过在屏幕上绘制特定的图案来解锁应用或功能的一种安全机制,它增加了用户体验的趣味性,同时...

    android仿iphone解锁

    在Android平台上实现“仿iPhone滑动解锁”功能,主要涉及到Android UI设计、触摸事件处理以及动画效果的实现。以下是对这个知识点的详细...通过这些技术的结合运用,可以创建出一个功能完整、体验流畅的滑动解锁功能。

    201822090316_手机屏幕保护APP设计与实现.doc

    - 任务:开发一个Android屏幕保护程序,当手机长时间无操作时,自动显示设定的图片作为屏保。 - 目标:确保手机进入屏保状态后,用户必须输入正确的密码才能解锁进入主系统,以此保护用户的个人隐私。 2. **整体...

    支付宝的手势解锁模仿

    本篇文章将深入探讨如何模仿支付宝的手势解锁功能,主要涉及触摸事件处理和自定义视图绘图的相关知识点。 首先,我们要了解的是`touches`系列方法。在iOS开发中,UIEvent对象的`touches`属性包含了用户在屏幕上触摸...

    Android_解锁屏幕与锁屏代码

    在Android系统中,屏幕锁定和解锁是用户交互的重要部分,为用户提供隐私保护和便捷操作。本文将深入探讨如何利用距离传感器实现自动锁屏和解锁功能,以提高用户体验。距离传感器通常用于检测设备是否被用户紧贴(如...

    android自定义View实现手势解锁

    本文将详细介绍如何使用自定义View在Android中实现手势解锁功能。首先,我们需要理解手势解锁的基本原理:用户通过在预设的点之间绘制连接线形成特定的图案,系统会记录并比较这个图案以验证用户身份。 ### 1. ...

    iOS实现手势解锁操作

    通过以上步骤,我们可以成功实现iOS手势解锁功能。值得注意的是,实际项目中可能需要考虑更多细节,如错误重试机制、手势的撤销与保存等。此外,为了增强安全性,可以结合其他验证方式,如密码输入或生物识别,提供...

    水族屏保水族屏保

    水族屏保是一种电脑屏幕保护程序,它的主要功能是在用户长时间未操作电脑时自动启动,以保护显示器。屏幕保护程序的初衷是为了防止显示器长时间显示静态图像导致的像素烧伤问题。水族屏保通常会展示动态的水下场景,...

    简易屏幕保护程序

    在这个屏幕保护程序中,开发者可能利用了Delphi的VCL框架来设计和实现窗口置顶和点我解锁功能。 窗口置顶功能是指程序窗口总是在其他窗口之上显示,即使在用户打开其他应用程序时,屏幕保护程序也会保持在最前端。...

    记事本(带图形解锁)

    图形解锁的工作原理是基于坐标系统的,用户在解锁屏幕上绘制的图案被转化为一系列坐标点,这些坐标点存储在安全的区域。每次解锁时,系统会比较用户重新绘制的图案与已存储的坐标序列是否一致,从而判断解锁是否成功...

    Android仿支付宝钱包的九宫格解锁

    总之,仿支付宝钱包的九宫格解锁功能是Android应用中一种有趣的实现,它结合了布局设计、事件处理、动画效果和密码验证等多个方面。通过学习和实践这个功能,开发者可以提升自己的Android开发技能,并为用户提供更加...

    基于易语言的屏幕保护锁

    打开这个文件,我们可以看到具体的编程逻辑,包括屏幕保护的启动条件、锁定机制、解锁验证等关键部分。 在实际应用中,屏幕保护锁可以设置成在一段时间无操作后自动启动,或者由用户手动触发。它通常包含以下几个...

    目前最全面最高仿支付宝的手势解锁,而且提供方法进行参数修改,能解决项目开发中所有手势解锁的开发.zip

    手势解锁是一种常见的安全验证方式,尤其在移动应用中被广泛使用,例如支付宝就采用了独特且易用的手势解锁...这个项目为移动应用开发提供了一种强大的工具,帮助开发者快速地在自己的项目中集成高质量的手势解锁功能。

    移动滑块解锁

    此外,移动滑块解锁也启发了其他形式的屏幕保护和解锁机制,如PIN码、图案解锁、指纹识别和面部识别等。这些技术在保护用户数据和隐私方面发挥着重要作用,同时也在不断进化以应对新的安全挑战。 总之,移动滑块...

    九宫格解锁小例

    开发者可以根据需求对九宫格解锁进行自定义,比如改变单元格的大小、颜色,或者添加更多的安全功能,如滑动速度、方向等。 在提供的"LockPattern"源码中,我们可以看到这些概念的具体实现。通过阅读源码,我们可以...

    简单好看的手势解锁,直接使用

    在Android平台上,开发者可以利用`GestureOverlayView`类来实现手势解锁功能。该类提供了绘制手势、监听手势完成和识别手势等功能。同时,开发者也可以自定义手势识别算法,以满足特定的应用场景和安全需求。 ### ...

    Android滑动解锁

    这个小例子提供了实现滑动解锁功能的基本步骤和技术要点。下面我们将详细探讨Android滑动解锁的相关知识点。 首先,滑动解锁的核心在于监听用户的触摸事件。Android通过`MotionEvent`类来处理触摸屏的输入事件。当...

Global site tag (gtag.js) - Google Analytics