2012-05-02 6 views
0

특정 활동이 표시되지 않는 경우에만 특정 상황에서 내 앱에서 알림을 시작하고 싶습니다.잠금 화면이 잠금 해제되었음을 확인하십시오.

나는 onCause/onDestroy를 사용하여 Activity를 생성하고 파괴 할 때 Service의 bind/unbind를 할 수 있었다.이 Activity가 onPause/onResume 메소드를 통해 볼 수있는 경우 다음 코드처럼 boolean으로 저장한다. 쇼 우는 :

public void onCreate(Bundle savedInstanceState) { 
    // ... 
    bindService(...); 
} 

public void onDestroy() { 
    // ... 
    unbindService(mConnection); 
} 

public void onResume() { 
    // ... 
    // this method sets to true the Service's boolean which retain Activity's visibility. 
    mService.registerActivity(true); 
} 

public void onPause() { 
    mService.registerActivity(false); 
} 

그리고 서비스에, 나는 알림을 시작하려면이 부울을 확인합니다.

특정 활동을 제외하고 모든 경우에 적용됩니다.이 활동에서 앱을 열었을 때 잠금 화면이 사용 설정된 경우입니다.

잠금 화면이 나타나면 몇 가지 테스트를 통해 Activity.onPause 메서드가 호출됩니다. 잠금 화면이 잠겨있을 때 Activity.onResume 메서드가 호출되기를 바랬는데 아무 일도 일어나지 않았습니다. 전원 버튼을 눌러 잠금 화면을 호출하면 Activity.onResume 메서드가 이미 호출됩니다. 이런 의미에서 내가하고있는 일은 옳지 않습니다.

사용자가 잠금 화면을 잠금 해제 할 때만 Activity.onResume 메서드가 호출되도록하려면 어떻게해야합니까? 또는 ... 잠금 화면이 잠금 해제되어 있고 사용자가 활동을보고 있는지 어떻게 확인할 수 있습니까?

+1

윌 'Activity.onWindowFocusChanged (부울 hasFocus)'필요한 값을 반환합니까? – techiServices

+0

@techiServices 감사합니다! 이것은 완벽하게 작동했습니다. 그러나 나는이 "대답"을 받아 들일 수 없다. 동의 할 수 있도록 질문에 대답하십시오. 승인? – borges

+0

답변 됨. 많은 감사합니다. – techiServices

답변

5

Activity.onWindowFocusChanged(boolean hasFocus)은 화면 잠금 해제 후 Activity에 포커스가 회복 될 때마다 true를 반환해야합니다.

0

이 검증되지 않은 생각, 그리고 난 해요 여전히 종류의 안드로이드 멍청한 놈 :

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
List<RunningAppProcessInfo> list2 = am.getRunningAppProcesses(); 

그런 다음,이 목록에서 활동을 필터링하고 그것의 중요성 속성을 확인. 전면 실행 응용 프로그램은 100입니다. 잠금 화면이 앞에있을 때 여전히 100인지 여부는 알 수 없습니다.

또는 화면이 잠겨져 있으면 x 초 동안 확인하고 다시 잠금 해제 할 때 실행하는 프로세스를 만들 수 있습니다.