アンビエント モードは、Google TV と Android TV に組み込まれているスクリーンセーバーです。静止画像を長時間表示しないようにすることを目的としています。これは、画面焼き付きが発生しやすい OLED などのディスプレイ技術にとって重要です。
ユーザーが 10 分間操作しないと、OS はデバイスをアンビエント モードにします。さらにユーザーが操作しない状態が続くと(デバイスの省エネモード設定で定義)、OS は省エネモードに移行し、ディスプレイをオフにします。メディア再生アプリは、ユーザーが操作していない場合でも(映画を視聴している場合など)、デバイスがアンビエント モードに移行しないようにすることがあります。
アンビエント モードに移行してから 30 分以内にユーザーがデバイスを操作すると、アンビエント モードに移行したときにアクティブだったアプリが復元されます。アンビエント モードに移行してから 30 分以上経過してからユーザーがデバイスを操作すると、ホーム画面に戻ります。ユーザーが省エネモード中に電源ボタンを使用してデバイスを起動すると、ホーム画面が表示されます。または、省エネモード中に特定のアプリボタン(YouTube など)を使用してデバイスを起動すると、そのアプリに直接移動します。
動画の再生
動画を再生する場合は、ユーザーが開始した再生中にデバイスがアンビエント モードに移行しないようにして 、中断のない視聴体験を提供することが重要です。ただし、再生が停止または一時停止した場合は、デバイスがアンビエント モードに移行するのを阻止してはなりません 。
音声再生
音声再生の場合、アプリは静止画像以外の独自のスクリーンセーバーを実装していない限り 、再生中にアンビエント モードを阻止しないでください。アンビエント モードがアクティブな間も音声再生は続行されます。
Android での音声再生では、部分的な wake lockが暗黙的に保持されます。これにより、デバイスがアンビエント モードに移行するのを阻止することはできませんが 、省電力モードへの移行を阻止することはできます 。そのため、デバイスがアンビエント モードに移行した後も再生は続行されますが、中断のない再生を可能にするために、デバイスがスリープ状態になるのを阻止します。
アンビエント モードを阻止する
OS がデバイスをアンビエント モードに移行しないようにすることは可能ですが、 アンビエント モードの要件に従って使用する必要があります。アプリ デベロッパーは、デバイスが省エネモードに移行するのを阻止することはできません。
アプリは、
Window にフラグを設定することで、画面がオフになるのを阻止できます。
Kotlin
activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
Java
requireActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
このフラグが設定されている間は、アンビエント モードが無効になります。再度有効にするには、フラグをクリアする必要があります。
Kotlin
activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
Java
requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);