setKeepScreenOn / FLAG_KEEP_SCREEN_ON的正确方法

时间:2011-03-16 20:06:51

标签: android screen power-management

我正在使用方法setKeepScreenOn(true),并且无法弄清楚如何相对于当前的Activity(具有内容视图集)来调用它。我已经能够通过在我的一个按钮上调用它来实现它,它总是出现在视图中,但这感觉不对 - 而且我确信必须有办法解决这个问题。我试着像这样引用当前的焦点:

getCurrentFocus().setKeepScreenOn(true);

但是抛出了NullPointerException。也许目前没有焦点。 那么,有人能告诉我如何引用我在里面工作的视图类吗?谢谢:))

5 个答案:

答案 0 :(得分:57)

尝试this answer

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

getWindow是为活动定义的方法,不需要您首先找到View

答案 1 :(得分:34)

正如霍克所说,但解释不佳。

您还可以在XML布局文件中使用FLAG_KEEP_SCREEN_ON

请注意android:keepScreenOn="true"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true"
    android:orientation="vertical" >

    <!-- whatever is in your layout -->

</LinearLayout>

我现在写了所有选择,以便将屏幕保持在博客文章中:
http://blog.blundellapps.com/tut-keep-screen-onawake-3-possible-ways/

答案 2 :(得分:4)

在XML中设置android:keepScreenOn

答案 3 :(得分:1)

如果您在类扩展View上执行此操作。你可以很简单:

this.setKeepScreenOn(true);

答案 4 :(得分:0)

根据Google文档android Developers you've two ways执行此操作:

第一种方式:

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="true"