Правильный метод для setKeepScreenOn / FLAG_KEEP_SCREEN_ON - PullRequest
22 голосов
/ 16 марта 2011

Я использую метод setKeepScreenOn (true) и не смог выяснить, как вызвать это по отношению к текущему действию (у которого есть набор представления содержимого). Я смог заставить его работать, вызывая его на одной из моих кнопок, которая всегда присутствует в представлении, но это неправильно - и я уверен, что должен быть способ обойти это. Я пытался ссылаться на текущий фокус следующим образом:

getCurrentFocus().setKeepScreenOn(true);

но это породило исключение NullPointerException. Может быть, не было никакого текущего внимания. Итак, кто-нибудь может сказать мне, как я могу ссылаться на класс представления, внутри которого я работаю? Спасибо:)

Ответы [ 5 ]

57 голосов
/ 16 марта 2011

Попробуйте этот ответ :

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

getWindow - это метод, определенный для действий, и вам не потребуется сначала искать View.

34 голосов
/ 17 марта 2012

Как сказал Хоук, но плохо объяснил.

Вы также можете использовать 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>

IТеперь вы написали все варианты сохранения экрана в посте блога:
http://blog.blundellapps.com/tut-keep-screen-onawake-3-possible-ways/

4 голосов
/ 17 мая 2011

Набор android:keepScreenOn в XML

1 голос
/ 16 марта 2011

Если вы делаете это в классе, расширяйте View. Вы можете просто:

this.setKeepScreenOn(true);
0 голосов
/ 09 августа 2015

Согласно Google Docs для разработчиков Android, есть два способа сделать это:

Первый способ:

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"

...