2016-08-07 2 views
0

ACTION_USER_PRESENT, ACTION_SCREEN_ONACTION_SCREEN_OFF을 서비스에 등록 할 때 ACTION_USER_PRESENT를받지 못했습니다."자동 n 초 후 자동으로 잠금"

  1. [수정]을사용 "화면 잠금"= 없음 : 나는 전원 버튼을 누르면이 모두 ACTION_SCREEN_ONACTION_SCREEN_OFF를 수신 한 다음

    IntentFilter screenStateFilter = new IntentFilter(); 
    screenStateFilter.addAction(Intent.ACTION_USER_PRESENT); 
    screenStateFilter.addAction(Intent.ACTION_SCREEN_ON); 
    screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF); 
    mReceiver = new ScreenReceiver(); 
    registerReceiver(mReceiver, screenStateFilter); 
    

    은 어떤 상황입니다 .

  2. [수정]사용 "화면 잠금"= 출근 : 내가 전원 버튼을 누르면 잠금 화면이 표시되고 ACTION_SCREEN_ON 수신된다. 잠금 해제 후 ACTION_USER_PRESENT을 수신했습니다.

  3. [수정]사용 "화면 잠금"= 잠금/PIN/비밀번호 자동 & 패턴 = 즉시 : 나는 전원 버튼을 누르면이, 잠금 화면이 표시되고 ACTION_SCREEN_ON 수신됩니다. 잠금 해제 후 ACTION_USER_PRESENT을 수신했습니다.

  4. [잘못된]사용 "화면 잠금"=/PIN/비밀번호 자동 & 패턴 = 15초에게을 잠 그려면 : 나는 화면을 잠그면을 15 초 후 잠금 해제는 잠금 화면이 표시되고 ACTION_SCREEN_ON이 수신됩니다. 잠금 해제 후 ACTION_USER_PRESENT을 수신했습니다. 그러나 화면을 잠그고 15 초 전에 잠금을 해제하면 예상대로 잠금 화면이 표시되지 않지만 ACTION_SCREEN_ON 만 수신됩니다. ACTION_USER_PRESENT을받지 못했습니다.

그래서 (사용자 잠금 해제 화면)/(ACTION_SCREEN_ON 화면이 여전히 잠금 해제 할 때) 할 때 메소드가 호출 될 수 있도록하는 방법에 대해 설명합니다.

나는

KeyguardManager mKeyguard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
if (!mKeyguard.inKeyguardRestrictedInputMode()) { 
    if (action.equals(Intent.ACTION_SCREEN_ON)) { 
     // Call method 
    } 
} 

if (action.equals(Intent.ACTION_USER_PRESENT)) { 
    // Call method 
} 

을 시도했다 그러나 방법은 위의 3 [수정] 상황 동안 두 번 호출됩니다.


는 :

image

image

답변

0

당신은 ACTION_SCREEN_ON에 대해 듣기 KeyGuardManager

을 사용할 수 있습니다 여기에 "자동으로 n 초 후 잠금"에 대한 스크린 샷입니다 기기가 잠겨 있는지 확인하십시오. 만약 그렇다면, ACTION_USER_PRESENT를 기다리십시오. 그렇지 않으면 코드를 즉시 실행하십시오.