背景モード

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