안녕하세요?
기기관리자 권한을 가지고 화면잠금 을 만들어 보았습니다
그런데 이게 Android4.0.4 나 특정 디바이스에서 lockNow(); 를 호출하면 화면이 꺼지긴하지만, 바로 다시 켜져버리는 현상이 생기고 있습니다..
도저히 원인은 모르겠네요... 제가 가지고 있는 테스트폰에선 이상이 없어서 재현이 불가하지만, 사용자들은 그런 현상이 있다고합니다
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
터치시 액션 발생
mDPM.lockNow();
하도록 하였습니다.
음... 이게 화면이 꺼진뒤 다시켜지는걸 방지하려면 켜지는걸 체크해서 다시 꺼버려야 할듯한데 어떤 방법이 있을까요??
mDPM.lockNow(); 로 화면을 꺼버린다음에 다시 켜지게 된다면 그 켜진 이벤트를 잡을 수 있을까요??
네, 보통 locknow() 를 시간차를 살짝 두고 두번 호출 하는 방식으로 해결 가능하다고들 하는데요, 제가 해봤을 때는 이렇게 할 경우 screen lock 이 뜨는데 걸리는 시간이 일정치 않아서 제대로 안될때도 있고요,
제가 해결한 방법으로는, keyguard를 disable 시켜서 잠금화면을 없앤다음 locknow()를 호출 하시면 다시 켜지지 않습니다.
물론 handler 나 timertask 등을 이용해 잠금 화면을 호출할 타이밍이 지난 다음에 다시 keyguard 를 reenable 시켜주시면 됩니다.
(저는 300ms 이나 400ms 정도로 할때 잘되더군요. 아직 기종을 다양하게 테스트 해보지 못해 적당한 시간을 잡지 못했지만요)




4.0.4 부터 생긴 버그(?) 입니다.
screen off and lock 이라는 앱은 이걸 해결한 것 같더군요.