黑屏
/** * 判斷是否黑屏 * @param c * @return */public final static boolean isScreenLocked(Context c) { android.app.KeyguardManager mKeyguardManager = (KeyguardManager) c.getSystemService(c.KEYGUARD_SERVICE); return !mKeyguardManager.inKeyguardRestrictedInputMode(); }
鎖屏的判斷,沒有直接的方法,但是在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() {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubif (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;}}};