Keep the screen awake throughout my activity

AndroidScreen

Android Problem Overview


I have three activities in my app. I want to keep the screen awake when it is in the second activity. The screen should not go off in my second activity unless the "lock" key is pressed manually. I went through many links but they seem unclear to me.

Android Solutions


Solution 1 - Android

As discussed in the Android tutorial Keep the Screen On, you can do this in a few ways. You can set the FLAG_KEEP_SCREEN_ON on the activity's window:

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

An XML equivalent for that is to add the attribute android:keepScreenOn="true" to the root view of your activity's layout. The advantage of setting the flag programmatically is that you can use

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

when you no longer need to force the screen to stay on while your activity is running.

Another way to control the screen (and certain other resources) is to use a wake lock:

mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE))
    .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
mWakeLock.acquire();
// screen stays on in this section
mWakeLock.release();

The manifest will have to include this permission:

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

However, as discussed in the tutorial, a wake lock is more appropriate for other use cases (such as a service or background task needing the CPU to keep running while the screen is off).

Solution 2 - Android

I find this solution much easier:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // Whatever your layout is
    ...
    android:keepScreenOn="true"> // Add this line

Just add this to your activity layout XML.

Solution 3 - Android

As per I understand your question, I think you have to use WAKE_LOCK for it in your application.

Something like,

final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");    
mWakeLock.acquire();

And in your application's manifest.xml file file add this,

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

Solution 4 - Android

try to use this

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

Solution 5 - Android

This code is deprecated, use this instead:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();

After you finish with usage, call (best solution is to call this method in onDestroy method of some activity):

wl.release();

More about this on this link

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser838522View Question on Stackoverflow
Solution 1 - AndroidTed HoppView Answer on Stackoverflow
Solution 2 - AndroidLiam George BetsworthView Answer on Stackoverflow
Solution 3 - Androiduser370305View Answer on Stackoverflow
Solution 4 - AndroidbindalView Answer on Stackoverflow
Solution 5 - AndroidPetarTView Answer on Stackoverflow