背景モード

アンビエント モードは、Google TV と Android TV に組み込まれているスクリーンセーバーです。静止画像を長時間表示しないようにすることが目的です。これは、画面焼き付きの影響を受けやすい OLED などのディスプレイ技術にとって重要です。

ユーザーが操作しなかった状態が 10 分間続くと、OS によってデバイスがアンビエント モードになります。ユーザーが操作しなかった時間がさらに経過すると(デバイスの省電力設定で定義されます)、OS は省電力モードに入り、ディスプレイの電源がオフになります。映画の視聴中など、ユーザーが操作していないにもかかわらず、メディア再生アプリによってデバイスが常に画面表示モードにならない場合があります。

ユーザーが常に画面表示モードに移行してから 30 分以内にデバイスを操作すると、常に画面表示モードに移行したときにアクティブだったアプリが復元されます。ユーザーがアンビエント モードに入った後 30 分以上経過してからデバイスを操作すると、ホーム画面に戻ります。ユーザーが省電力モード中に電源ボタンを使用してデバイスを起動すると、ホーム画面が表示されます。または、ユーザーが特定のアプリボタン(YouTube など)を使用して、省エネモードでデバイスを起動した場合、そのアプリに直接移動します。

動画の再生

動画再生では、ユーザーが開始した再生中にデバイスがアンビエント モードにならないようにすることが重要です。これにより、途切れることのない視聴体験を提供できます。ただし、再生が停止または一時停止されたときに、デバイスがアンビエント モードに移行することをアプリが妨げてはなりません

オーディオの再生

音声再生の場合、静止画像以外の独自のスクリーンセーバーを実装していない限り、アプリは再生中に背景モードを妨げてはなりません。アンビエント モードが有効になっている間は、音声の再生が続行されます。

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);