画面をオンのままにする

ゲームアプリや映画アプリなど、一部のアプリでは画面をオンのままにする必要があります。一部の 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)
    }
}

Java

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);
  }
}

画面をオンに保つもう 1 つの方法は、アプリのレイアウト 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 デバイスでは、FLAG_KEEP_SCREEN_ON を使用して、アクティブな動画再生中にデバイスがアンビエント モードに移行しないようにします。フォアグラウンド アクティビティで FLAG_KEEP_SCREEN_ON が設定されていない場合、デバイスは一定の時間が経過すると自動的にアンビエント モードになります。

関連ドキュメント