1、黑屏
/** * 判断是否黑屏 * @param c * @return */ public final static boolean isScreenLocked(Context c) { android.app.KeyguardManager mKeyguardManager = (KeyguardManager) c.getSystemService(c.KEYGUARD_SERVICE); return !mKeyguardManager.inKeyguardRestrictedInputMode(); }
2、锁屏
锁屏的判断,没有直接的方法,但是在Android的监听机制中,有一些事件可以进行判断:
Intent.ACTION_SCREEN_ON //当按下电源键,屏幕亮起的时候
Intent.ACTION_SCREEN_OFF //当按下电源键,屏幕变黑的时候
Intent.ACTION_USER_PRESENT //当解除锁屏的时候
我们当时的应用环境是在某一个activity中使用,并且该activity已经继承了其他类,所以采用了动态注册的方法:
1、在oncreate()方法中,注册监听事件
// 注册事件 registerReceiver(myReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON)); registerReceiver(myReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF)); registerReceiver(myReceiver, new IntentFilter(Intent.ACTION_USER_PRESENT));
2、写一个内部BroadcastReceiver
private BroadcastReceiver myReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if (Intent.ACTION_SCREEN_ON.equals(intent.getAction()) ) {//当按下电源键,屏幕亮起的时候 } if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction()) ) {//当按下电源键,屏幕变黑的时候 islockScreen = true; } if (Intent.ACTION_USER_PRESENT.equals(intent.getAction()) ) {//当解除锁屏的时候 islockScreen = false; } } };