스마트기기개발관련/안드로이드 개발

[android] 안드로이드 android 개발 Lock screen 확인

AlrepondTech 2016. 8. 22. 19:11
반응형

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

출처: https://tjandroid.blogspot.kr/2011/10/lock-screen.html

Lock screen 확인

 

 

앱 실행 중 power 버튼을 눌러 화면이 꺼지고 다시 power 버튼을 눌러 화면이 켜지면 Lock screen 이 나타난다. 이 때 이미 앱은 onResume 함수가 불린 상태다.

Lock screen 에서 onResume 이 불리면 안되는 경우가 있다.

1. Lock screen 상태 인지 확인

Keyguard 서비스 객체를 얻고 inKeyguardRestrictedInputMode 함수의 결과값으로 확인한다.

  1. KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);  
  2.   
  3. if (keyguardManager.inKeyguardRestrictedInputMode()) {  
  4.     // lock screen  
  5. else {  
  6.     // lock screen 이 아님  
  7. }  


2. Lock screen 이 풀리는 이벤트를 얻기

Lock screen 이 풀릴때 Intent.ACTION_USER_PRESENT 가 broadcast 된다.

  1. private class UnlockReceiver extends BroadcastReceiver {  
  2.   
  3.     @Override  
  4.     public void onReceive(Context context, Intent intent) {  
  5.         String action = intent.getAction();  
  6.         if (action.equals(Intent.ACTION_USER_PRESENT)) {  
  7.   
  8.             resuming(); // 실제 작업  
  9.   
  10.             if (unlockReceiver != null) {  
  11.                 unregisterReceiver(unlockReceiver);  
  12.                 unlockReceiver = null;  
  13.             }  
  14.         }  
  15.     }  
  16. }  

3. onResume 함수에서 Lock screen 감지하여 만약 Lock screen 상태이면 위 BroadcastReceiver 를 등록하고 실제 작업을 Lock screen 이 풀리는 시점에 행해지도록 한다.

  1. @Override  
  2. protected void onResume() {  
  3.     super.onResume();  
  4.   
  5.     // check lock screen  
  6.     KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);  
  7.     if (keyguardManager.inKeyguardRestrictedInputMode()) {  
  8.         IntentFilter unlockReceiverfilter = new IntentFilter();  
  9.         unlockReceiverfilter.addAction(Intent.ACTION_USER_PRESENT);  
  10.         unlockReceiver = new UnlockReceiver();  
  11.         registerReceiver(unlockReceiver, unlockReceiverfilter);  
  12.     } else {  
  13.         resuming();  
  14.     }  
  15.   
  16. }  

 

 

=================================

=================================

=================================

 

 

 

반응형