Android отключает тайм-аут экрана во время работы приложения - PullRequest
104 голосов
/ 16 ноября 2010

Есть ли способ отключить заставку во время работы моего приложения?

Я имею в виду затемнение экрана.

Ответы [ 11 ]

156 голосов
/ 16 ноября 2010

Вы хотите использовать что-то вроде этого:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
91 голосов
/ 04 мая 2012

Я использовал:

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

для отключения тайм-аута экрана и

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

чтобы включить его.

76 голосов
/ 03 октября 2012

Существует также способ XML, который Google рекомендует:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true">

Проверка Слайды Google - Слайд 16.

"Вейк-замки дороги, если забыты(...) Подумайте об использовании Android: keepScreenOn для обеспечения корректности "

3 голосов
/ 28 января 2017

Просто добавьте строку ниже в ваш MainActivity, и ваше приложение никогда не выключит свет.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
2 голосов
/ 13 августа 2015

Важно отметить, что все эти методы должны запускаться из потока пользовательского интерфейса для работы. См. изменение KeepScreenOn из JavaScript в приложении Android Cordova

2 голосов
/ 19 июля 2012

Поместите это в начало

    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep");
    wakeLock.acquire();

А это у тебя манифест

    <uses-permission android:name="android.permission.WAKE_LOCK" />

Не забудьте

wakeLock.release();

atStop

2 голосов
/ 03 июля 2012

В представлении, в моем случае подкласс SurfaceView, вы можете всегда включать экран.Я хотел, чтобы экран оставался включенным, пока этот вид еще рисовал.

public class MyCoolSurfaceView extends SurfaceView { 
@Override
protected void onAttachedToWindow (){
    super.onAttachedToWindow();
    this.setKeepScreenOn(true);
}

@Override
protected void onDetachedFromWindow(){
    super.onDetachedFromWindow();
    this.setKeepScreenOn(false);
}
1 голос
/ 16 ноября 2010

Это можно сделать, приобретя Wake Lock.

Я не проверял это сам, но здесь - небольшое руководство по этому вопросу.

0 голосов
/ 20 ноября 2017
procedure SetSleep(aEnable:Boolean);
var
    vFlags: integer;
begin
    vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_TURN_SCREEN_ON or
        TJWindowManager_LayoutParams.JavaClass.FLAG_DISMISS_KEYGUARD or
        TJWindowManager_LayoutParams.JavaClass.FLAG_SHOW_WHEN_LOCKED or
        TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON;

    if aEnable then
    begin
      CallInUIThread (   // uses FMX.Helpers.Android
      procedure
      begin
        TAndroidHelper.Activity.getWindow.setFlags (vFlags, vFlags);
      end );
    end
    else
      CallInUIThread (
      procedure
      begin
        TAndroidHelper.Activity.getWindow.clearFlags (vFlags);
      end );
end;
0 голосов
/ 15 ноября 2017
android:keepScreenOn="true"

- лучший способ справиться с этим, если мы хотим, чтобы какой-то конкретный экран постоянно просыпался, в противном случае нам приходится самим решать, когда его включать и отключать

https://developer.android.com/training/scheduling/wakelock.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...