Reputation: 20906
can I programmatically set screen to off in android if is not done automatically after 1 minute of inactivity.
is this possible to do programmatically in android?
I found this threads: Android: How to turn screen on and off programmatically?
Turning screen on and off programmatically not working on some devices
but there is no timer after 1 minute.
Upvotes: 15
Views: 18188
Reputation: 6721
Yes, the method best used in this case is to programmatically set screen timeout instead.
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 1000);
1000 is in milliseconds which means 1 second, you can replace it with any value as desired.
Needed permission:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
UPDATE
It will overwrite the phone system value (Settings/Display/Sleep), so perhaps you need to restore the current settings after finish:
private static final int SCREEN_OFF_TIME_OUT = 13000;
private int mSystemScreenOffTimeOut;
private void setScreenOffTimeOut() {
try {
mSystemScreenOffTimeOut = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT);
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, SCREEN_OFF_TIME_OUT);
} catch (Exception e) {
Utils.handleException(e);
}
}
private void restoreScreenOffTimeOut() {
if (mSystemScreenOffTimeOut == 0) return;
try {
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, mSystemScreenOffTimeOut);
} catch (Exception e) {
Utils.handleException(e);
}
}
Upvotes: 22