대기 모드

대기 모드는 Google TV 및 Android TV에 내장된 화면 보호기입니다. 정적 이미지가 장시간 표시되지 않도록 하는 것이 목적입니다. 이는 화면 번지기에 취약할 수 있는 OLED와 같은 디스플레이 기술에 중요합니다.

10분 동안 사용자 활동이 없으면 OS에서 기기를 대기 모드로 전환합니다. 사용자의 비활성 상태(기기 에너지 절약 설정으로 정의됨)가 어느 정도 더 지나면 OS가 에너지 절약 모드로 전환되어 화면이 꺼집니다. 미디어 재생 앱은 사용자가 기기와 상호작용하지 않더라도(예: 영화 시청 중) 기기가 대기 모드로 전환되지 않도록 할 수 있습니다.

사용자가 대기 모드로 전환된 후 30분 이내에 기기와 상호작용하면 대기 모드에 진입했을 때 활성 상태였던 앱이 복원됩니다. 사용자가 대기 모드로 전환된 후 30분이 지나도 기기와 상호작용하면 홈 화면으로 돌아갑니다. 에너지 절약 모드일 때 사용자가 전원 버튼을 사용하여 기기를 시작하면 홈 화면으로 이동합니다. 또는 에너지 절약 모드일 때 사용자가 특정 앱 버튼(예: YouTube)을 사용하여 기기를 시작하면 해당 앱으로 바로 이동됩니다.

미디어 재생에 MediaSession를 사용하고 있다면 재생을 시작할 때 암시적 부분 wake lock이 유지됩니다. 재생을 일시중지해도 wake lock이 해제되지 않습니다. 즉, 기기가 자동으로 대기 모드로 전환되지만 이후 에너지 절약 모드로 전환되지는 않습니다. 사용자가 대기 모드로 전환된 후 30분 이내에 기기와 상호작용하면 앱이 복원됩니다.

동영상 재생

동영상 재생의 경우 사용자가 시작한 재생 중에 기기가 대기 모드로 전환되지 않도록 하여 중단 없는 보기 환경을 제공하는 것이 중요합니다. 그러나 앱은 재생이 중지되거나 일시중지될 때 기기가 대기 모드로 전환되지 못하도록 해서는 안 됩니다.

오디오 재생

오디오 재생의 경우 앱은 비정적 이미지로 자체 화면 보호기를 구현하지 않는 한 재생 중에 대기 모드를 방지해서는 안 됩니다. 대기 모드가 활성화되어 있을 때는 오디오 재생이 계속됩니다.

Android의 오디오 재생은 암시적으로 부분 wake lock을 유지합니다. 이렇게 해도 기기가 대기 모드로 전환되지는 않지만 이후 에너지 절약 모드로 전환되지는 않습니다. 따라서 기기가 대기 모드로 전환된 후에도 재생이 계속되지만 중단 없는 재생을 위해 기기는 절전 모드로 전환되지 않습니다.

대기 모드 방지

OS에서 기기를 대기 모드로 전환하지 못하게 할 수도 있지만, 이는 대기 모드 요구사항에 따라 사용해야 합니다. 앱 개발자는 기기가 에너지 절약 모드로 전환되지 않도록 할 수 없습니다.

앱은 Window에 플래그를 설정하여 화면이 꺼지지 않도록 할 수 있습니다.

Kotlin

requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

Java

requireActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

이 플래그가 설정된 동안에는 대기 모드가 사용 중지됩니다. 다시 사용 설정하려면 플래그를 지워야 합니다.

Kotlin

requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

Java

requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);