微光模式

氛围模式是 Google TV 和 Android TV 中内置的屏保。其目的是避免长时间显示静态图片。这对于 OLED 等显示技术非常重要,因为其可能容易出现屏幕烧屏。

设备会在用户无活动 10 分钟后进入氛围模式。当用户再处于不活动状态(由设备节能设置定义)后,操作系统会进入节能模式,从而关闭显示屏。尽管用户未与设备互动(例如在观看电影时),媒体播放应用仍可能会阻止设备进入氛围模式。

如果用户在进入氛围模式后的 30 分钟内与设备互动,系统会恢复进入氛围模式时处于活动状态的应用。如果用户在进入氛围模式后超过 30 分钟与设备互动,系统会将其返回到主屏幕。当用户在节能模式下使用电源按钮启动设备时,系统会将其转到主屏幕。或者,如果用户在节能模式下使用特定应用按钮(例如 YouTube)启动设备,系统会将用户直接转到该应用。

如果您使用 MediaSession 进行媒体播放,它将在开始播放时保持隐式部分唤醒锁定。暂停播放不会解除此唤醒锁定。 这意味着设备可能会自动进入氛围模式,但之后不会进入节能模式。如果用户在进入氛围模式后的 30 分钟内与设备互动,系统会恢复您的应用。

视频播放

对于视频播放,请务必防止设备在用户启动播放期间进入氛围模式,以提供不间断的观看体验。不过,当播放停止或暂停时,应用不应阻止设备进入氛围模式。

音频回放

对于音频播放,除非应用使用非静态图像实现自己的屏保,否则不得在播放期间阻止氛围模式。在氛围模式处于启用状态时,音频将继续播放。

Android 上的音频播放会隐式持有部分唤醒锁定。这不会阻止设备进入氛围模式,但阻止后续过渡到节能模式。因此,即使设备进入氛围模式,播放也会继续,但会阻止设备进入休眠状态,以实现不间断的播放。

防止启用氛围模式

可以阻止操作系统将设备置于氛围模式,但使用方式必须遵循氛围模式要求。 应用开发者无法阻止设备进入节能模式。

应用可以通过在 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);