Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Keep screen on in Activity - does not work with FLAG_KEEP_SCREEN_ON

For a long time I thought that I knew how to stop the screen from going into sleep mode, I simply used this code in my Activity:

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

However, I realized that this only worked when my phone was in "developer mode", ie when the USB debugging (Settings --> Developer options --> USB debugging) was enabled/checked. Then the above code indeed stops the screen/device to go to sleep.

When that debugging is not checked, then my screen goes to sleep like there's no tomorrow. I am running Android 4.04 on my device, and

 android:minSdkVersion="12"
 android:targetSdkVersion="16"

Edit

I have tested with Commonsware's suggestion, and added the setKeepScreenOn() to the code, so it looks like this:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
View root = findViewById(android.R.id.content); 
if (root != null)
    root.setKeepScreenOn(true);

I have also checked so that this code is actually executed, and it is. But it doesn't change a thing.

like image 508
Ted Avatar asked Mar 03 '13 19:03

Ted


2 Answers

i was facing same problem, i was using one activity for my project and all the other screen are fragments then i used the android:keepScreenOn="true" in main activity.

please try to use this and let me know if you didn't get your desire result.

Thanks.

like image 70
Aman Avatar answered Oct 21 '22 19:10

Aman


Only solution which realy works in my app is WakeLock in main application class. Unfortunately the SCREEN_BRIGHT_WAKE_LOCK flag is deprecated!

public class MyApp extends Application {
    PowerManager.WakeLock screenOnWakeLock;
    @Override
    public void onCreate() {
        super.onCreate();
        PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        wakeLock =  powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,"ScreenlockTag");
        wakeLock.acquire();
    }

    @Override
    public void onTerminate()
    {
        if (screenOnWakeLock != null && screenOnWakeLock.isHeld())
            screenOnWakeLock.release();
        super.onTerminate();
    }
}
like image 1
Kamil Svoboda Avatar answered Oct 21 '22 20:10

Kamil Svoboda