背景モード

背景モードは、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);