LockScreen 위에 FullScreen 알람 뛰우기
2021. 11. 26. 18:27ㆍ경험/Clock
폰에 알림을 설정 하면 설정한 시간에 폰 화면이 켜지면서 알림 화면이 노출 되는것을 본적 있을것이다.
알림을 종료하면 그제서야 락스크린 화면이 표시된다.
일부 기능이 Deprecated 되었지만 8(api level 28 P) 에서도 동작이 잘된다.
window.addFlags(
Deprecated in API level 27(Android 8.1 O_MR1)
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED //Lock Screen 만을 상대로 현재 윈도우를 상위에 그려지게 설정
Deprecated in API level 27(Android 8.1 O_MR1)
or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON //화면 켜지기
Deprecated in API level 26(Android 8.0 O)
or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD //KEYGUARD(락스크린) 제거
or WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON //화면 껴지지않고 유지
)
잘동작 하지만 Deprecated 된걸 변경된 것으로 바꿔 주었다.
하지만 동작이 이상하다 화면이 켜지고 락스크린이 먼저 보여진다.(노트 8에서 테스트)
원인을 분석 하니 노트8에서만 이상하게 동작 하는것 같다.(에뮬(버전 P)로 테스트시 동작 잘됨)
val keyguardMgr = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
setShowWhenLocked(true) // FLAG_SHOW_WHEN_LOCKED 대체
setTurnScreenOn(true) // FLAG_TURN_SCREEN_ON 대체
keyguardMgr.requestDismissKeyguard(this, null) // FLAG_DISMISS_KEYGUARD 대체
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
Deprecated 사용 없이 노트 8에서도 동작이 정상적으로 되도록 하고 싶어서 다른 대체제를 사용해보니 잘동작 하였다.