微光模式

氛围模式是 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);