强制屏幕

时间:2010-01-25 11:42:02

标签: android

在应用程序运行时,如何强制屏幕保持活动状态而不关闭?

3 个答案:

答案 0 :(得分:326)

请不要使用唤醒锁

这要求您为应用程序提供额外的权限,并且很容易在您不小心保持唤醒锁定的情况下引入错误,从而使屏幕保持打开状态。

使用窗口标记FLAG_KEEP_SCREEN_ON远远好得多,您可以在onCreate()的活动窗口中启用,如下所示:

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

这将确保在您的窗口位于前景时屏幕保持打开状态,并且仅在它位于前景时。它大大简化了这个常见用例,消除了您的应用在状态之间转换时需要做的任何杂耍。

答案 1 :(得分:31)

这个问题已经由@hackbod做出了很好的答案!

我正在用两个额外的解决方案回答这个问题!

现有解决方案:

@Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);    
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }

其他解决方案:

我们可以使用keepScreenOn

使用implementation

1。 setKeepScreenOn() in java code

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // or any View (in case generated programmatically ) 
        View v = getLayoutInflater().inflate(R.layout.driver_home, null);

        v.setKeepScreenOn(true);
        setContentView(v);
       }

文档http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)

2。keepScreenOn添加到xml layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true" >

文档http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn

注意(一些有用的点):

1。 keepScreenOn Main/Root/Parent View应该在child view 上使用它可以与任何Parent view一起使用无关紧要因为它适用于View's Visibility must be visible

2。事情唯一的问题是 {{1}} 其他方面它不起作用!

答案 2 :(得分:16)

另一种解决方案是将android:keepScreenOn="true"documentation)添加到需要保持屏幕的视图中。

允许在哪些视图保持不变的情况下进行更细粒度的控制。您甚至可以通过这种方式从资源文件中引用设置。