本文实例讲述了Android4.0 Keyguard解锁屏机制。...为了对Keyguard模块的处理逻辑有更清晰的理解,下面首先从系统构成的角度概括介绍Keyguard解锁屏模块的框架,然后对解锁屏模块中重要的处理逻辑进行详细介绍。...一、系统介绍 Keyguard解锁屏模块的框架类图如下: ?...图中仅列出了Keyguard解锁屏模块涉及的重要类,这些类实现了Keyguard模块的主要功能,它们的作用如下: PhoneWindowManager是解锁屏模块对外交互的接口,窗口管理Service、...电源管理Service等外部模块都是通过PhoneWindowManager访问Keyguard内部功能。
/res \ frameworks/base/packages/Keyguard/res_ext \ $(LOCAL_PATH)/res \ $(LOCAL_PATH)/res_ext...发现其中的资源文件来自Keyguard。...那么我们要在Keyguard里做修改,编译SystemUI。...1.frameworks/base/packages/Keyguard/res/layout/keyguard_status_view.xml这是锁屏上的时钟界面 <com.android.keyguard.KeyguardStatusView
慢充和快充提示语 \frameworks\base\packages\SystemUI\res-keyguard\values-zh-rCN 中文提示语 <string name="<em>keyguard</em>_plugged_in..." msgid="89308975354638682" "正在充电"</string <string name="<em>keyguard</em>_plugged_in_charging_fast" msgid=...R.string.keyguard_indication_charging_time_fast : R.string.keyguard_plugged_in_charging_fast...R.string.keyguard_indication_charging_time_slowly : R.string.keyguard_plugged_in_charging_slowly...R.string.keyguard_indication_charging_time : R.string.keyguard_plugged_in; break;
在 ANDROID系统中keyguard的功能实现采用了中介者模式,用来中介keyguard相关的请求,包括查询keyguard的状态,影响keyguard应当显示和复位的电源管理事件,以及当keyguard...显示时对窗口管理的通知事件和来自keyguard视图本身的关于keyguard是否成功unlocked的事件等。...事件相关的功能等 ,而KeyguardViewManager、KeyguardHostView、KeyguardUpdateMonitor类通过相关回调向KeyguardViewMediator传送Keyguard...视图本身和keyguard有关状态更新方面的事件, 另外KeyguardService服务也是通过KeyguardViewMediator查询keyguard的状态 并通过IKeyguardService...接口对外提供keyguard的状态信息。
在安卓如下目录下找到KeyguardUpdateMonitor.java文件做如下修改 /frameworks/base/packages/SystemUI/src/com/android/keyguard.../KeyguardUpdateMonitor.java diff --git a/frameworks/base/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java...b/frameworks/base/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index cd23c97c71.....9aca9e13af 100644 --- a/frameworks/base/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java...+++ b/frameworks/base/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -423,7
/** * Mediates requests related to the keyguard....the keyguard is showing, and events from the keyguard view itself * stating that the keyguard was succesfully...* * Events from the keyguard view: * - user succesfully unlocked keyguard -> hide keyguard view, and...When * false, this will override all other conditions for turning on the keyguard....ii、密码验证对应的布局文件keyguard_password_view.xml,如果我们希望在布局上添加内容,就可以在这个布局文件上添加了。
可以看出,锁屏界面属于状态栏,属于SystemUi的一部分,类似于状态栏下拉之后的界面,而Android4.4.2是属于keyguard锁屏界 面。...Android4.4.2的锁屏界面隶属于keyguard,与statusBar没有关系,就是一个界面。...; case PIN: return R.layout.keyguard_pin_view; case Password: return R.layout.keyguard_password_view...; case SimPin: return R.layout.keyguard_sim_pin_view; case SimPuk: return R.layout.keyguard_sim_puk_view.../src/com/android/keyguard/KeyguardSecurityMode.java public enum SecurityMode { Invalid, /
else{ //页面悬浮于锁屏之上 getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD...WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); //亮屏 KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE
KeyguardManager keyguardManager = (KeyguardManager) MyApplication.getContext() .getSystemService(KEYGUARD_SERVICE...name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DISABLE_<em>KEYGUARD</em>
android.intent.action.SCREEN_ON")){ //键盘锁的服务 mKeyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE...android.intent.action.SCREEN_ON") ){ mKeyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE...(); startService(i); } } }; 权限问题 <uses-permission android:name="android.permission.DISABLE_<em>KEYGUARD</em>...android:name="android.permission.VIBRATE" / <uses-permission android:name="android.permission.DISABLE_<em>KEYGUARD</em>
all-java-files-under, src) \ src/com/android/systemui/EventLogTags.logtags LOCAL_STATIC_JAVA_LIBRARIES := aaa Keyguard...true LOCAL_PROGUARD_FLAG_FILES := proguard.flags LOCAL_RESOURCE_DIR := \ frameworks/base/packages/Keyguard.../res \ $(LOCAL_PATH)/res LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages com.android.keyguard
(MSG_KEYGUARD_DRAWN_TIMEOUT, 1000); mKeyguardDelegate.onScreenTurningOn(mKeyguardDrawnCallback...= null) { mHandler.removeMessages(MSG_KEYGUARD_DRAWN_TIMEOUT); }...= null || isForceHiding || keyguard)) { win.mWinAnimator.mDrawState = DRAW_PENDING...mWaitingForDrawn.add(win); // No need to wait for the windows below Keyguard...mScreenOnListener = null; mScreenOnFully = true; // Remember the first time we draw the keyguard
让该window后所有的东西都成暗淡(dim) int FLAG_DISMISS_KEYGUARD Window flag: when set the window will cause the keyguard...to be dismissed, only if it is not a secure lock keyguard. int FLAG_DITHER Window flag: turn on dithering...内部输入法对话框,显示于当前输入法窗口之上 int TYPE_KEYGUARD Window type: keyguard window....锁屏窗口 int TYPE_KEYGUARD_DIALOG Window type: dialogs that the keyguard shows 锁屏时显示的对话框 int TYPE_PHONE Window...int TYPE_PRIORITY_PHONE Window type: priority phone UI, which needs to be displayed even if the keyguard
另外Keyguard(锁屏界面)也是属于SystemUI的一部分。并且在Android8.0代码中,Keyguard模块已经从外部被合并到SystemUI源码目录下。 ?...StatusBar:通知消息提示和状态展现 NavigationBar:返回,HOME,Recent KeyGuard:锁屏模块可以看做单独的应用,提供基本的手机个人隐私保护 Recents:近期应用管理
KeyguardLock mKeyguardLock=null; 复制代码 关闭系统屏保: mKeyguardManager= (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE...之后我们需要再配置文件中申请权限: </uses-permission
method 锁屏全透明步骤: 1,反编译android.policy.jar android.policy\Data\smali\com\android\internal\policy\impl\keyguard...final BACKGROUND_COLOR:I = 0x00000000 2,android.policy\Data\smali\com\android\internal\policy\impl\keyguard
public static final int TYPE_KEYGUARD = FIRST_SYSTEM_WINDOW +4; 信息窗口。...public static final int TYPE_KEYGUARD_DIALOG = FIRST_SYSTEM_WINDOW +9; 系统内部错误提示,显示于所有内容之上。...WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD...intent.getAction()); KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE...wl.acquire(); wl.release(); } 最后,是添加如下权限 <uses-permission android:name="android.permission.DISABLE_<em>KEYGUARD</em>
android:layout_weight="1" android:visibility="invisible" android:orientation="horizontal" / <com.android.keyguard.AlphaOptimizedLinearLayout...paddingEnd="@dimen/status_bar_clock_end_padding" android:gravity="center_vertical|start" / </com.android.keyguard.AlphaOptimizedLinearLayout..."wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" <com.android.keyguard.AlphaOptimizedLinearLayout
整个布局,NotificationPanelView,status_bar_expanded.xml 1、KeyguardStatusBarView,keyguard_status_bar.xml ,状态栏...2、KeyguardStatusView,keyguard_status_view.xml ,时间和日期 3、NotificationStackScrollLayout,@+id/notification_stack_scroller...,通知 4、KeyguardBottomAreaView,keyguard_bottom_area.xml,底部解锁 结语 好了,这篇结束了,主要学习 StatusBar 相关布局在哪里写了,先有个直观认识
0.2f window.attributes = params } private fun unlock() { (getSystemService("keyguard... 在AndroidManifest.xml中申请权限 <uses-permission android:name="android.permission.DISABLE_<em>KEYGUARD</em>
领取专属 10元无门槛券
手把手带您无忧上云