summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2014-05-21 02:34:25 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-05-21 02:34:25 +0000
commit0702786d81eb9f9bf47c3a0827d3f2824c3f4228 (patch)
tree9cec55e66f06fcdd051c227b92313ae3f9a7e011
parentf7963fab0decb70b72b848fe3d7a14c5ed54ff95 (diff)
parent27736f5c0ada99bf2a7e007a1dec0ad51f65fa52 (diff)
downloadframeworks_base-0702786d81eb9f9bf47c3a0827d3f2824c3f4228.zip
frameworks_base-0702786d81eb9f9bf47c3a0827d3f2824c3f4228.tar.gz
frameworks_base-0702786d81eb9f9bf47c3a0827d3f2824c3f4228.tar.bz2
Merge "Allow display timeouts to be set in config.xml." into klp-modular-dev
-rw-r--r--core/res/res/values/config.xml43
-rw-r--r--core/res/res/values/symbols.xml3
-rw-r--r--services/core/java/com/android/server/power/PowerManagerService.java44
3 files changed, 74 insertions, 16 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 9d27164..dd13db0 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1181,6 +1181,49 @@
-->
<bool name="config_powerDecoupleInteractiveModeFromDisplay">false</bool>
+ <!-- User activity timeout: Minimum screen off timeout in milliseconds.
+
+ Sets a lower bound for the {@link Settings.System#SCREEN_OFF_TIMEOUT} setting
+ which determines how soon the device will go to sleep when there is no
+ user activity.
+
+ This value must be greater than zero, otherwise the device will immediately
+ fall asleep again as soon as it is awoken.
+ -->
+ <integer name="config_minimumScreenOffTimeout">10000</integer>
+
+ <!-- User activity timeout: Maximum screen dim duration in milliseconds.
+
+ Sets an upper bound for how long the screen will dim before the device goes
+ to sleep when there is no user activity. The dim duration is subtracted from
+ the overall screen off timeout to determine the screen dim timeout.
+ When the screen dim timeout expires, the screen will dim, shortly thereafter
+ the device will go to sleep.
+
+ If the screen off timeout is very short, the dim duration may be reduced
+ proportionally. See config_maximumScreenDimRatio.
+
+ This value may be zero in which case the screen will not dim before the
+ device goes to sleep.
+ -->
+ <integer name="config_maximumScreenDimDuration">7000</integer>
+
+ <!-- User activity timeout: Maximum screen dim duration as a percentage of screen off timeout.
+
+ This resource is similar to config_maximumScreenDimDuration but the maximum
+ screen dim duration is defined as a ratio of the overall screen off timeout
+ instead of as an absolute value in milliseconds. This is useful for reducing
+ the dim duration when the screen off timeout is very short.
+
+ When computing the screen dim duration, the power manager uses the lesser
+ of the effective durations expressed by config_maximumScreenDimDuration and
+ config_maximumScreenDimRatio.
+
+ This value must be between 0% and 100%. If the value is zero, the screen will not
+ dim before the device goes to sleep.
+ -->
+ <fraction name="config_maximumScreenDimRatio">20%</fraction>
+
<!-- Base "touch slop" value used by ViewConfiguration as a
movement threshold where scrolling should begin. -->
<dimen name="config_viewConfigurationTouchSlop">8dp</dimen>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 72ff32f..29ac8de 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1633,6 +1633,9 @@
<java-symbol type="string" name="enable_explore_by_touch_warning_message" />
<java-symbol type="bool" name="config_powerDecoupleAutoSuspendModeFromDisplay" />
<java-symbol type="bool" name="config_powerDecoupleInteractiveModeFromDisplay" />
+ <java-symbol type="integer" name="config_minimumScreenOffTimeout" />
+ <java-symbol type="integer" name="config_maximumScreenDimDuration" />
+ <java-symbol type="fraction" name="config_maximumScreenDimRatio" />
<java-symbol type="string" name="config_customAdbPublicKeyConfirmationComponent" />
<java-symbol type="layout" name="resolver_list" />
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 7138c3e..75ed204 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -147,20 +147,9 @@ public final class PowerManagerService extends com.android.server.SystemService
private static final int USER_ACTIVITY_SCREEN_BRIGHT = 1 << 0;
private static final int USER_ACTIVITY_SCREEN_DIM = 1 << 1;
- // Default and minimum screen off timeout in milliseconds.
+ // Default timeout in milliseconds. This is only used until the settings
+ // provider populates the actual default value (R.integer.def_screen_off_timeout).
private static final int DEFAULT_SCREEN_OFF_TIMEOUT = 15 * 1000;
- private static final int MINIMUM_SCREEN_OFF_TIMEOUT = 10 * 1000;
-
- // The screen dim duration, in milliseconds.
- // This is subtracted from the end of the screen off timeout so the
- // minimum screen off timeout should be longer than this.
- private static final int SCREEN_DIM_DURATION = 7 * 1000;
-
- // The maximum screen dim time expressed as a ratio relative to the screen
- // off timeout. If the screen off timeout is very short then we want the
- // dim timeout to also be quite short so that most of the time is spent on.
- // Otherwise the user won't get much screen on time before dimming occurs.
- private static final float MAXIMUM_SCREEN_DIM_RATIO = 0.2f;
// The name of the boot animation service in init.rc.
private static final String BOOT_ANIMATION_SERVICE = "bootanim";
@@ -337,6 +326,20 @@ public final class PowerManagerService extends com.android.server.SystemService
// True if dreams should be activated on dock.
private boolean mDreamsActivateOnDockSetting;
+ // The minimum screen off timeout, in milliseconds.
+ private int mMinimumScreenOffTimeoutConfig;
+
+ // The screen dim duration, in milliseconds.
+ // This is subtracted from the end of the screen off timeout so the
+ // minimum screen off timeout should be longer than this.
+ private int mMaximumScreenDimDurationConfig;
+
+ // The maximum screen dim time expressed as a ratio relative to the screen
+ // off timeout. If the screen off timeout is very short then we want the
+ // dim timeout to also be quite short so that most of the time is spent on.
+ // Otherwise the user won't get much screen on time before dimming occurs.
+ private float mMaximumScreenDimRatioConfig;
+
// The screen off timeout setting value in milliseconds.
private int mScreenOffTimeoutSetting;
@@ -565,6 +568,12 @@ public final class PowerManagerService extends com.android.server.SystemService
com.android.internal.R.integer.config_dreamsBatteryLevelMinimumWhenNotPowered);
mDreamsBatteryLevelDrainCutoffConfig = resources.getInteger(
com.android.internal.R.integer.config_dreamsBatteryLevelDrainCutoff);
+ mMinimumScreenOffTimeoutConfig = resources.getInteger(
+ com.android.internal.R.integer.config_minimumScreenOffTimeout);
+ mMaximumScreenDimDurationConfig = resources.getInteger(
+ com.android.internal.R.integer.config_maximumScreenDimDuration);
+ mMaximumScreenDimRatioConfig = resources.getFraction(
+ com.android.internal.R.fraction.config_maximumScreenDimRatio, 1, 1);
}
private void updateSettingsLocked() {
@@ -1317,12 +1326,12 @@ public final class PowerManagerService extends com.android.server.SystemService
if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {
timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);
}
- return Math.max(timeout, MINIMUM_SCREEN_OFF_TIMEOUT);
+ return Math.max(timeout, mMinimumScreenOffTimeoutConfig);
}
private int getScreenDimDurationLocked(int screenOffTimeout) {
- return Math.min(SCREEN_DIM_DURATION,
- (int)(screenOffTimeout * MAXIMUM_SCREEN_DIM_RATIO));
+ return Math.min(mMaximumScreenDimDurationConfig,
+ (int)(screenOffTimeout * mMaximumScreenDimRatioConfig));
}
/**
@@ -2085,6 +2094,9 @@ public final class PowerManagerService extends com.android.server.SystemService
pw.println(" mDreamsEnabledSetting=" + mDreamsEnabledSetting);
pw.println(" mDreamsActivateOnSleepSetting=" + mDreamsActivateOnSleepSetting);
pw.println(" mDreamsActivateOnDockSetting=" + mDreamsActivateOnDockSetting);
+ pw.println(" mMinimumScreenOffTimeoutConfig=" + mMinimumScreenOffTimeoutConfig);
+ pw.println(" mMaximumScreenDimDurationConfig=" + mMaximumScreenDimDurationConfig);
+ pw.println(" mMaximumScreenDimRatioConfig=" + mMaximumScreenDimRatioConfig);
pw.println(" mScreenOffTimeoutSetting=" + mScreenOffTimeoutSetting);
pw.println(" mMaximumScreenOffTimeoutFromDeviceAdmin="
+ mMaximumScreenOffTimeoutFromDeviceAdmin + " (enforced="