2012-01-25 2 views
13

내 응용 프로그램의 경우 화면이 잠겨 있는지 확인해야합니다. 이것을 확인하는 방법은 문제가 있습니다.화면이 잠겨있는 것을 확인하는 방법

if(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON != 0){ 
    // some code 
}else if((WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)!= 0){ 
    // some code 
} 

그러나이 경우 다른 부분 ... 난 화면이 고정되지 않았거나 확인하기 위해 사용해야 할 플래그 모두 항상 실행 : 나는 다음과 같은 플래그를 사용

+0

다음 링크 참조 [ 15,[http://stackoverflow.com/questions/8317331/detecting-when-screen-is-locked][2] [http://stackoverflow.com/questions/3446202/android-detect- [3] [1] : http : // stackoverflow.COM/질문/3170563/안드로이드 감지 전화 잠금 이벤트 [2] : http://stackoverflow.com/questions/8317331/detecting-when-screen-is-locked [3] : HTTP : //stackoverflow.com/questions/3446202/android-detect-phone-unlock-event-not-screen-on – Shruti

+5

if 및 else를 모두 실행하는 방법은 무엇입니까? –

+0

http://stackoverflow.com/questions/8968265/android-auto-logout-when-app-goes-to-background/8968763#8968763 –

답변

1

android.intent.action.ACTION_SCREEN_OFF 조치로 방송 수신기를 등록하고 수신자의 onReceive() 메소드에 코드를 작성하십시오.

활동을 사용하는 경우 화면 잠금 상태 일 때 onPause()가 호출되고 화면 잠금 상태 일 때 onResume()이 호출됩니다.

코드에서 일부 플래그를 확인하고 있는데, 그 중 어디에 체크 할 것인지 모르겠습니다. 그것은 계속 검증입니까? 앱에서 활동을 사용하는 경우 위의 절차가 수행되며 Android 개발자 웹 사이트에서 확인하십시오.

+0

@Babu : 감사합니다. 나는 시도 할 것이다 :) – Prasad

0

화면 잠금을 위해 방송 된 의도가 있습니다 & 잠금 해제.

가 좋아 체크 :

if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){//LOGIC Here} 

은 알려주세요!

+0

위의 조건은 브로드 캐스트 수신기에서 체크해야 하는가? – Prasad

+0

: 동일한 일을 사용했지만 작동하지 않음 : ( – Prasad

22

아직 답을 얻지 못했고 다른 Google 직원에게 도움이 될 수 있으므로 질문은 이미 오래되었지만 답변을 드리겠습니다. ;)

먼저 Intent.ACTION_SCREEN_OFF & Intent.ACTION_SCREEN_ON에 대해 BroadcastReceiver를 등록해야합니다. 이 리시버는 코드에 등록되어야하며 매니페스트에 선언 될 때 작동하지 않습니다. 방송 수신기에서

, 당신은 Intent.ACTION_SCREEN_ON를받을 때 화면이 아래의 코드를 사용하여 잠겨있는 경우, 당신은 확인할 수 있습니다 여기에

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
boolean locked = km.inKeyguardRestrictedInputMode(); 
+1

링크가 필요없는 것 같습니다. BroadcastReceiver http://stackoverflow.com/a/8668648/401403 – Arash

0

내가 무슨 짓을 :

이 경우 처리 사용자는 화면 잠금을 해제했으나 아직 홈 화면에 들어 가지 않았거나 통화 중 사용자 화면이 꺼져 있음을 나타냅니다.

  if (Intent.ACTION_SCREEN_ON.equals(pIntent.getAction()) || 
        Intent.ACTION_USER_PRESENT.equals(pIntent.getAction())) { 
       if(mListener!=null) { 
        KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
        boolean locked = km.inKeyguardRestrictedInputMode(); 
        Log.v(TAG, ": Phone lock state from KEYGUARD_SERVICE: Current state:" + (locked ? "LOCKED":"UNLOCKED")); 
        mIsPhoneLocked = locked; 
       } 
      } 
1

나는, 당신이 이런 식으로 작업을 수행 할 수 있습니다 당신은 이미 답을 찾았지만, 그렇지 않은 경우 (다른 개발자를위한) 할 수 있습니다 같아요

   PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
       boolean isScreenOn = powerManager.isScreenOn(); 

if (!isScreenOn) { 
      //Screen is in OFF State 
      //Code to power on and release lock 



       KeyguardManager km = (KeyguardManager) this 
       .getSystemService(Context.KEYGUARD_SERVICE); 
       final KeyguardManager.KeyguardLock kl = km 
       .newKeyguardLock("MyKeyguardLock"); 
       kl.disableKeyguard(); 

       PowerManager pm = (PowerManager) this 
       .getSystemService(Context.POWER_SERVICE); 
       WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK 
       | PowerManager.ACQUIRE_CAUSES_WAKEUP 
       | PowerManager.ON_AFTER_RELEASE, "MyWakeLock"); 
       wakeLock.acquire(); 
} 
3
KeyguardManager myKeyManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); 

if(myKeyManager.inKeyguardRestrictedInputMode()) { 

//screen is locked 

} else { 

//screen is not locked 

} 
관련 문제