微光模式

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