Android判断屏幕锁屏的方法总结
2015-11-20 17:42
381 查看
于做一个项目,需要判断屏幕是否锁屏,发现网上方法很多,但是比较杂,现在进行总结一下:
总共有两类方法:
一、代码直接判定
二、接收广播
现在先说第一类方法(代码直接判定):
1、通过PowerManager的isScreenOn方法,代码如下:
?
注释已经写的很明白了,现在大概说一下,
屏幕“亮”,表示有两种状态:a、未锁屏 b、目前正处于解锁状态 。这两种状态屏幕都是亮的
屏幕“暗”,表示目前屏幕是黑的 。
2、通过KeyguardManager的inKeyguardRestrictedInputMode方法,代码如下:
?
注释已经写的很明白了,现在大概说一下,boolean flag = mKeyguardManager.inKeyguardRestrictedInputMode();
源码的返回值的解释是:true
if in keyguard restricted input mode.
经过试验,总结为:
如果flag为true,表示有两种状态:a、屏幕是黑的 b、目前正处于解锁状态 。
如果flag为false,表示目前未锁屏
注明:上面的两种方法,也可以通过反射机制来调用。
下面以第一个方法为例说明一下。
?
现在介绍第二类方法(接收系统的广播):
接收系统广播事件,屏幕在三种状态(开屏、锁屏、解锁)之间变换的时候,系统都会发送广播,我们只需要监听这些广播即可。
代码如下:
?
好了,就写这么多了,希望对大家有用!!
总共有两类方法:
一、代码直接判定
二、接收广播
现在先说第一类方法(代码直接判定):
1、通过PowerManager的isScreenOn方法,代码如下:
?
屏幕“亮”,表示有两种状态:a、未锁屏 b、目前正处于解锁状态 。这两种状态屏幕都是亮的
屏幕“暗”,表示目前屏幕是黑的 。
2、通过KeyguardManager的inKeyguardRestrictedInputMode方法,代码如下:
?
源码的返回值的解释是:true
if in keyguard restricted input mode.
经过试验,总结为:
如果flag为true,表示有两种状态:a、屏幕是黑的 b、目前正处于解锁状态 。
如果flag为false,表示目前未锁屏
注明:上面的两种方法,也可以通过反射机制来调用。
下面以第一个方法为例说明一下。
?
接收系统广播事件,屏幕在三种状态(开屏、锁屏、解锁)之间变换的时候,系统都会发送广播,我们只需要监听这些广播即可。
代码如下:
?
相关文章推荐
- Android 内存分析工具MAT(上)
- 新手适用Android开发的10大技巧
- Android PopupWindow的使用和分析
- Android开发wifi调试取代数据线调试
- Android开发中如何避免 Out Of Memory(OOM) ?
- AsyncTask使用
- Android Resource篇--- I 存放资源文件的规则
- Android 垃圾回收器(GC)
- android popupwindow 弹出窗口在控件上方居中,比控件大一倍
- 56、LeakCanary——直白的展现Android中的内存泄露
- 想要打包为jar包的Android项目依赖jar包和library,怎么破?
- Android基础记录
- 快速掌握 Android Studio 中 Gradle 的使用方法
- Android框架层之音频管理器AudioManager的使用
- Android Bitmap的使用
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- Android之打造个性化的Toast
- [Android学习笔记三] Support v7提供交错式网格布局开发示例
- android EditText inputType说明&android:imeOptions
- Android SwitchButton 完善版(在前人基础上完善)