Android отключает тайм-аут экрана во время работы приложения

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

Яркость экрана - это то, что я имею в виду.

Ответ 1

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

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

Ответ 2

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

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

чтобы отключить таймаут экрана и

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

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

Ответ 3

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

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

Отметьте Google Презентации - Слайд 16.

"Вакелоки стоят дорого, если забыли (...) Рассмотрите возможность использования android: keepScreenOn для обеспечения правильности"

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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

@Override
protected void onDetachedFromWindow(){
    super.onDetachedFromWindow();
    this.setKeepScreenOn(false);
}

Ответ 7

Поместите это на onStart

    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();

на onStop

Ответ 9

это лучший способ решить эту проблему.

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

Ответ 10

android:keepScreenOn="true"

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

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

Ответ 11

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;