画面をオンのままにする

特定のアプリ(ゲームや映画アプリなど)では画面をオンのままにする必要があります。一部の 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 が設定されていない場合、デバイスは一定の時間が経過すると自動的にアンビエント モードになります。

関連ドキュメント