setKeepScreenOn/FLAG_KEEP_SCREEN_ON的正确方法

Emm*_*sin 25 android screen power-management

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

getCurrentFocus().setKeepScreenOn(true);
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*lis 58

试试这个答案:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

getWindow是为活动定义的方法,不需要您找到View第一个.

  • @Ted:你在这里写的(至少)其他两个问题是错的.我们应该把它放在别人身上:`FLAG_KEEP_SCREEN_ON`完美适用于它所描述的内容:它只是让屏幕保持开启状态.它也不需要任何许可才能工作,也不仅仅在您的设备处于调试模式时才有效.它应该适用于每个设备,如果没有,那就是设备的故障;) (5认同)

Blu*_*ell 36

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

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

请注意 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>
Run Code Online (Sandbox Code Playgroud)

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


小智 5

android:keepScreenOn在 XML 中设置