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