화면을 켜진 상태로 유지

게임이나 영화 앱 같은 특정 앱은 화면이 켜진 상태를 유지해야 합니다. 일부 Android API는 화면을 자동으로 켜 둡니다. 다른 경우에는 플래그를 설정하여 화면을 수동으로 켜둘 수 있습니다.

화면을 수동으로 켜진 상태로 유지

기기 화면을 켜진 상태로 유지하려면 활동에서 FLAG_KEEP_SCREEN_ON 플래그를 설정합니다. 이 플래그는 서비스나 다른 앱 구성요소가 아닌 활동에서만 설정할 수 있습니다. 예를 들면 다음과 같습니다.

Kotlin

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
    }
}

자바

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getWindow().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를 설정하지 않으면 일정 시간 동안 활동이 없으면 기기가 자동으로 대기 모드로 전환됩니다.

참고 항목