Для моего Android-приложения я никогда не хочу, чтобы телефон блокировал или подсветка выключилась
Как сохранить экран в своем приложении?
Ответ 1
Используйте PowerManager.WakeLock класс inorder для выполнения этого. См. Следующий код:
import android.os.PowerManager;
public class MyActivity extends Activity {
    protected PowerManager.WakeLock mWakeLock;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(final Bundle icicle) {
        setContentView(R.layout.main);
        /* This code together with the one in onDestroy() 
         * will make the screen be always on until this Activity gets destroyed. */
        final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
        this.mWakeLock.acquire();
    }
    @Override
    public void onDestroy() {
        this.mWakeLock.release();
        super.onDestroy();
    }
}
Используйте разрешение follwing в файле манифеста:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Надеюсь, что это решит вашу проблему...:)
Ответ 2
Добавьте одну строку кода после setContentView() в onCreate()
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_flag);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
		Ответ 3
Здесь уже много ответов! Я отвечаю на этот вопрос дополнительными и надежными решениями:
Использование PowerManager.WakeLock не является настолько надежным решением, поскольку приложение требует дополнительных разрешений.
<uses-permission android:name="android.permission.WAKE_LOCK" />
Кроме того, если он случайно сохраняет блокировку следа, он может оставить экран включенным.
Поэтому я не рекомендую использовать решение PowerManager.WakeLock. Вместо этого используйте любое из следующих решений:
Сначала:
Мы можем использовать getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); в onCreate()
@Override
        protected void onCreate(Bundle icicle) {
            super.onCreate(icicle);    
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        }
Второй:
мы можем использовать keepScreenOn
  1. с использованием setKeepScreenOn() в java-коде:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        View v = getLayoutInflater().inflate(R.layout.driver_home, null);// or any View (incase generated programmatically ) 
        v.setKeepScreenOn(true);
        setContentView(v);
       }
Docs http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
  2. Добавление keepScreenOn в макет xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true" >
Docs http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Примечания (некоторые полезные пункты):
-  Не важно, что 
keepScreenOnследует использовать в основном/корневом/родильном представлении. Он может использоваться с любым дочерним представлением и будет работать так же, как и в родительском представлении. - Единственное, что имеет значение, - видимость видимости должна быть видимой. В противном случае это не сработает!
 
Ответ 4
Не использовать блокировку пробуждения.
It requires permission and other stuff and may cause error if you forget to set it in right time.
Самый простой способ - использовать приведенный ниже код, если вы хотите сохранить экран.
 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Одно дополнение к ответу, если вы хотите удалить или завершить keep_Screen_on
getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
вы также можете увидеть здесь..
И the best and easiest way.. Использование android:keepScreenOn="true" в макете корня вашей активности делает то же самое без дополнительного кода. Но он останется в состоянии Keep_Scree_on.
Он может быть различным по вашему требованию См. здесь
Ответ 5
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
 getWindow - это метод, определенный для действий, и вам не потребуется сначала искать View.
Ответ 6
Взгляните на это обсуждение Экран принудительного включения
hackbod имеет отличный ответ.
Ответ 7
Вы можете просто использовать setKeepScreenOn() из класса View.
Ответ 8
Добавление android:keepScreenOn="true" в XML активности (-ов), которую вы хотите сохранить на экране, является наилучшим вариантом. Добавьте эту строку в основную компоновку активности (-ов).
Что-то вроде этого
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >
...
</LinearLayout>
		Ответ 9
Вам нужно использовать Power Manager, чтобы получить блокировку слежения в вашем приложении.
Скорее всего вас интересует FULL_WAKE_LOCK:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
wl.acquire();
....
wl.release();
		Ответ 10
В этот момент метод
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
        this.mWakeLock.acquire();
устарел.
Вы должны использовать
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); и getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Ответ 11
Попробуйте Это мы можем сделать это несколькими способами в этих
Solution1:
     class MainActivity extends AppCompactActivity{
                        @Override
                                protected void onCreate(Bundle icicle) {
                                    super.onCreate(icicle);    
                                    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                                }
                        }
Solution2:
в файле activity_main.xml просто добавьте
 <android:KeepScreenOn="true"/>
Мой совет: пожалуйста, не используйте WakeLock, если вы используете это, вы будете определять дополнительное разрешение и в основном эта вещь, полезная в среде разработки процессора.
и обязательно выключите экран при закрытии активности
вы можете сделать это таким образом
 pubic void onDestry(){
    getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
		Ответ 12
<uses-permission android:name="android.permission.WAKE_LOCK" />
должен иметь, если вы хотите установить его как
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
		Ответ 13
Не нужно добавлять разрешения и делать трюки. Просто используйте ниже текст в своем основном макете.
  android:keepScreenOn="true"