背景モードは、Google TV と Android TV に組み込まれているスクリーンセーバーです。その目的は、静止画像を長時間表示しないようにすることです。これは、画面が焼き付きになりやすい OLED などのディスプレイ技術では重要です。
OS は、操作が 10 分間操作されないと、デバイスが常に背景モードになります。ユーザーの操作がない状態が一定時間続くと(デバイスの省エネモードの設定で定義されます)、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);