保持屏幕常亮

某些应用(例如游戏或电影应用)需要保持屏幕常亮。某些 Android API 会自动为您保持屏幕常亮。在其他情况下,您可以设置一个标志来手动保持屏幕常亮。

手动保持屏幕常亮

要保持设备屏幕常亮,请在您的 activity 中设置 FLAG_KEEP_SCREEN_ON 标志。此标志只能在 activity 中设置,不能在服务或其他应用组件中设置。例如

Kotlin

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
    }
}

Java

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  }
}

另一种保持屏幕常亮的方法是在应用的布局 XML 文件中设置 android:keepScreenOn 属性

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">
    ...
</RelativeLayout>

使用 android:keepScreenOn="true" 等同于使用 FLAG_KEEP_SCREEN_ON。您可以使用最适合您应用的方法。在 activity 中以编程方式设置此标志的优点是,您可以选择稍后以编程方式清除此标志,从而允许屏幕关闭。

如果带有 FLAG_KEEP_SCREEN_ON 标志的应用进入后台,系统会允许屏幕正常关闭。在这种情况下,您无需明确清除该标志。如果您的应用不再需要保持屏幕常亮,您应该通过调用 clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) 来清除该标志。

电视环境模式

在电视设备上,使用 FLAG_KEEP_SCREEN_ON 可防止设备在活动视频播放期间进入环境模式。如果前台 activity 未设置 FLAG_KEEP_SCREEN_ON,设备将在一段时间不活动后自动进入环境模式。

另请参阅