aboutsummaryrefslogtreecommitdiff
path: root/service/src/com/android
diff options
context:
space:
mode:
authorSteve Paik <spaik@google.com>2018-06-20 12:35:23 -0700
committerSteve Paik <spaik@google.com>2018-06-21 07:07:28 +0000
commit8b5ee2c3c7df38b4d6595d62e6adadbc4ad3d733 (patch)
treea686c13657dd2eff9fd22aa9144cb999746ce87f /service/src/com/android
parent7603beb9f697eae2752a5e7020d02a0d802a2744 (diff)
downloadCar-8b5ee2c3c7df38b4d6595d62e6adadbc4ad3d733.tar.gz
Fix display brightness scaling
Bug: 80498984 Test: Settings app Change-Id: I009ce2df5f003255c4ebefff6876aa1c38037897 Merged-In: Ifdfb1340ee0236a77664d11676082d60db4b1663
Diffstat (limited to 'service/src/com/android')
-rw-r--r--service/src/com/android/car/systeminterface/DisplayInterface.java44
1 files changed, 15 insertions, 29 deletions
diff --git a/service/src/com/android/car/systeminterface/DisplayInterface.java b/service/src/com/android/car/systeminterface/DisplayInterface.java
index 015f54dc27..8dc7bd4044 100644
--- a/service/src/com/android/car/systeminterface/DisplayInterface.java
+++ b/service/src/com/android/car/systeminterface/DisplayInterface.java
@@ -16,6 +16,10 @@
package com.android.car.systeminterface;
+import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX;
+import static com.android.settingslib.display.BrightnessUtils.convertGammaToLinear;
+import static com.android.settingslib.display.BrightnessUtils.convertLinearToGamma;
+
import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
@@ -60,20 +64,18 @@ public interface DisplayInterface {
new ContentObserver(new Handler(Looper.getMainLooper())) {
@Override
public void onChange(boolean selfChange) {
- int brightness = mMinimumBacklight;
- int range = mMaximumBacklight - mMinimumBacklight;
+ int linear = GAMMA_SPACE_MAX;
try {
- brightness = System.getInt(mContentResolver, System.SCREEN_BRIGHTNESS);
+ linear = System.getInt(mContentResolver, System.SCREEN_BRIGHTNESS);
} catch (SettingNotFoundException e) {
Log.e(CarLog.TAG_POWER, "Could not get SCREEN_BRIGHTNESS: " + e);
}
- // Convert brightness from 0-255 to 0-100%
- brightness -= mMinimumBacklight;
- brightness *= 100;
- brightness += (range + 1) / 2;
- brightness /= range;
- mService.sendDisplayBrightness(brightness);
+ int gamma = convertLinearToGamma(linear, mMinimumBacklight,
+ mMaximumBacklight);
+ int percentBright = (gamma * 100 + ((GAMMA_SPACE_MAX + 1) / 2))
+ / GAMMA_SPACE_MAX;
+ mService.sendDisplayBrightness(percentBright);
}
};
@@ -124,26 +126,10 @@ public interface DisplayInterface {
}
@Override
- public void setDisplayBrightness(int brightness) {
- // Brightness is set in percent. Need to convert this into 0-255 scale. The actual
- // brightness algorithm should look like this:
- //
- // newBrightness = (brightness * (max - min)) + min
- //
- // Since we're using integer arithmetic, do the multiplication first, then add 50 to
- // round up as needed.
- brightness *= mMaximumBacklight - mMinimumBacklight; // Multiply by full range
- brightness += 50; // Integer rounding
- brightness /= 100; // Divide by 100
- brightness += mMinimumBacklight;
- // Range checking
- if (brightness < mMinimumBacklight) {
- brightness = mMinimumBacklight;
- } else if (brightness > mMaximumBacklight) {
- brightness = mMaximumBacklight;
- }
- // Set the brightness
- System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS, brightness);
+ public void setDisplayBrightness(int percentBright) {
+ int gamma = (percentBright * GAMMA_SPACE_MAX + 50) / 100;
+ int linear = convertGammaToLinear(gamma, mMinimumBacklight, mMaximumBacklight);
+ System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS, linear);
}
@Override