게임이나 영화 앱 같은 특정 앱은 화면이 켜진 상태를 유지해야 합니다. 일부 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
를 설정하지 않으면 일정 시간 동안 활동이 없으면 기기가 자동으로 대기 모드로 전환됩니다.