KeyguardManager简介

android.app.KeyguardManager 类用于对 Keyguard 进行管理,即对锁屏进行管理
Class Overview

Class that can be used to lock and unlock the keyboard. Get an instance of this class by calling getSystemService(java.lang.String) with argumentKEYGUARD_SERVICE. The Actual class to control the keyboard locking is KeyguardManager.KeyguardLock.

d android.app.KeyguardManager 有两个内部类
Nested Classes
class KeyguardManager.KeyguardLock This class is deprecated. Use FLAG_DISMISS_KEYGUARD and/or FLAG_SHOW_WHEN_LOCKED instead; this allows you to seamlessly hide the keyguard as your application moves in and out of the foreground and does not require that any special permissions be requested. Handle returned bynewKeyguardLock(String) that allows you to disable / reenable the keyguard.  
其实该类所提供了解除锁屏和反解锁屏这两个功能并不能使用FLAG_DISMISS_KEYGUARDFLAG_SHOW_WHEN_LOCKED来代替。不知gooolge为什么把它标为deprecated
interface KeyguardManager.OnKeyguardExitResult Callback passed to exitKeyguardSecurely(KeyguardManager.OnKeyguardExitResult) to notify caller of result. 
这个是为得到执行exitKeyguardSecurely的结果设计的一个回调接口,以表示调用是否成功。
主要函数
void exitKeyguardSecurely( KeyguardManager.OnKeyguardExitResult callback)
This method is deprecated. Use FLAG_DISMISS_KEYGUARD and/or FLAG_SHOW_WHEN_LOCKED instead; this allows you to seamlessly hide the keyguard as your application moves in and out of the foreground and does not require that any special permissions be requested. Exit the keyguard securely. The use case for this api is that, after disabling the keyguard, your app, which was granted permission to disable the keyguard and show a limited amount of information deemed safe without the user getting past the keyguard, needs to navigate to something that is not safe to view without getting past the keyguard. This will, if the keyguard is secure, bring up the unlock screen of the keyguard.
boolean inKeyguardRestrictedInputMode()
If keyguard screen is showing or in restricted key input mode (i.e.
这是函数用于判断当前是否处于锁屏状态。
KeyguardManager.KeyguardLock newKeyguardLock( String tag)
This method is deprecated. Use FLAG_DISMISS_KEYGUARD and/or FLAG_SHOW_WHEN_LOCKED instead; this allows you to seamlessly hide the keyguard as your application moves in and out of the foreground and does not require that any special permissions be requested. Enables you to lock or unlock the keyboard. Get an instance of this class by callingContext.getSystemService(). This class is wrapped by KeyguardManager.
android.app.KeyguardManager.KeyguardLock android.app.KeyguardManager 的内部类,我们真正的是通过它来解除锁屏和反解除锁屏
通过 disableKeyguard() 函数来解除锁屏,通过来 reenableKeyguard() 反解除锁屏. reenableKeyguard() 反解除锁屏的意思是:如果在调用 disableKeyguard() 函数之前是锁屏的,那么就进行锁屏,否则不进行任何操作。当然如果之前没调用 disableKeyguard() 函数,也不进行任何操作。
主要函数
void disableKeyguard()
Disable the keyguard from showing.
需要权限 android.permission.DISABLE_KEYGUARD
void reenableKeyguard()
Reenable the keyguard.
如果在此之前调用了 disableKeyguard() 函数,且在调用 disableKeyguard() 函数之前是锁屏的话,那么就进行锁屏,否则不进行任何操作。
android.app.KeyguardManager.OnKeyguardExitResult 只定义了个函数接口 onKeyguardExitResult(boolean success)
Public Methods
abstract void onKeyguardExitResult(boolean success)
返回 true 表示 exitKeyguardSecurely() 函数执行成功,否则表示失败
实例1:
void test()
{
KeyguardManager keyguardManager=(KeyguardManager )getSystemService(Context.KEYGUARD_SERVICE);
String lockTag=this.getLocalClassName();
KeyguardManager.OnKeyguardExitResult keyguardExitResultListener =new KeyguardManager.OnKeyguardExitResult()
{
@Override
public void onKeyguardExitResult(boolean success) {
// TODO Auto-generated method stub
if(success)
Log.i(tag,"successfull to do Keyguard exit");
else
Log.i(tag,"fail to do Keyguard exit");
}
};
keyguardManager.exitKeyguardSecurely(keyguardExitResultListener);
KeyguardManager.KeyguardLock keyguardLock=keyguardManager.newKeyguardLock(lockTag);
for(int i=10;i>0;i--)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i(tag,"We will unlock the screen in "+i+" seconds");
}
keyguardLock.disableKeyguard();
for(int i=20;i>0;i--)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i(tag,"We will roll back the state of Keyguard in "+i+" seconds");
}
long t=System.currentTimeMillis();
keyguardLock.reenableKeyguard();
Log.i(tag,"time:"+(System.currentTimeMillis()-t));
}
注意:需要权限android.permission.DISABLE_KEYGUARD
  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android的熄屏功能实现主要通过调用系统提供的电源管理服务来实现。下面将简单介绍一下具体的实现方法。 要实现Android的熄屏功能,首先需要在Activity或者Service中获取PowerManager的实例。代码如下所示: PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 获取到PowerManager实例后,即可调用其提供的方法来控制屏幕的熄灭。常用的方法包括acquire和release两种方式。 1. acquire方法:通过调用acquire方法可以获得一个屏幕唤醒的锁,控制屏幕保持唤醒状态。代码如下所示: PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "Tag"); wakeLock.acquire(); 2. release方法:通过调用release方法可以释放之前获得的屏幕唤醒锁,使得屏幕可以自动灭屏。代码如下所示: wakeLock.release(); 另外还可以使用KeyguardManager来控制锁屏的状态。可通过KeyguardManager的方法判断和控制屏幕是否处于锁屏状态。代码示例如下: KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); if (keyguardManager.isKeyguardLocked()) { // 锁屏状态 } else { // 非锁屏状态 } 综上所述,Android实现熄屏功能主要通过PowerManagerKeyguardManager来控制屏幕的唤醒和锁屏状态。通过调用相应的方法可以灵活控制屏幕的熄灭和亮起。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值