ゲームや映画アプリなど、一部のアプリでは画面をオンにしておく必要があります。一部の Android API は、画面を自動的にオンに保ちます。それ以外の場合は、フラグを設定して画面を手動でオンのままにできます。
画面を手動でオンのままにする
デバイスの画面をオンのままにするには、アクティビティで FLAG_KEEP_SCREEN_ON フラグを設定します。このフラグはアクティビティでのみ設定できます。サービスやその他のアプリ コンポーネントでは設定できません。次に例を示します。
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.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) を呼び出してフラグをクリアする必要があります。
テレビの背景モード
テレビデバイスでは、動画再生中にデバイスが背景モードに移行しないように、FLAG_KEEP_SCREEN_ON を使用します。フォアグラウンド アクティビティで FLAG_KEEP_SCREEN_ON が設定されていない場合、一定時間操作がないと、デバイスは自動的に常に画面表示モードに切り替わります。