게임이나 영화 앱 같은 특정 앱은 화면이 켜진 상태를 유지해야 합니다. 일부 Android API는 자동으로 화면을 켜진 상태로 유지합니다. 다른 경우에는 플래그를 설정하여 화면을 수동으로 켜진 상태로 유지할 수 있습니다.
수동으로 화면 켜진 상태 유지하기
기기 화면을 켜진 상태로 유지하려면 활동에서 FLAG_KEEP_SCREEN_ON 플래그를 설정합니다. 이 플래그는 활동에서만 설정할 수 있으며 서비스나 다른 앱 구성요소에서는 설정할 수 없습니다. 예를 들면 다음과 같습니다.
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
화면을 켜진 상태로 유지하는 또 다른 방법은 애플리케이션의 레이아웃 XML 파일에서 android:keepScreenOn 속성을 설정하는 것입니다.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout>
android:keepScreenOn="true"를 사용하는 것은 FLAG_KEEP_SCREEN_ON를 사용하는 것과 같습니다.
앱에 가장 적합한 접근 방식을 사용할 수 있습니다. 활동에서 프로그래매틱 방식으로 플래그를 설정하면 나중에 프로그래매틱 방식으로 플래그를 지워 화면을 끌 수 있다는 장점이 있습니다.
FLAG_KEEP_SCREEN_ON 플래그가 있는 앱이 백그라운드로 전환되면 시스템에서 화면이 정상적으로 꺼지도록 허용합니다. 이 경우 플래그를 명시적으로 지울 필요가 없습니다. 앱에서 더 이상 화면을 켜진 상태로 유지할 필요가 없으면 clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)를 호출하여 플래그를 지워야 합니다.
TV의 대기 모드
TV 기기에서는 FLAG_KEEP_SCREEN_ON를 사용하여 활성 동영상 재생 중에 기기가 대기 모드로 전환되지 않도록 합니다. 포그라운드 활동이 FLAG_KEEP_SCREEN_ON를 설정하지 않으면 일정 기간 활동이 없을 때 기기가 자동으로 대기 모드로 전환됩니다.