diff options
author | Steve Paik <spaik@google.com> | 2018-06-20 12:35:23 -0700 |
---|---|---|
committer | Steve Paik <spaik@google.com> | 2018-06-21 07:07:28 +0000 |
commit | 8b5ee2c3c7df38b4d6595d62e6adadbc4ad3d733 (patch) | |
tree | a686c13657dd2eff9fd22aa9144cb999746ce87f /service/src/com/android | |
parent | 7603beb9f697eae2752a5e7020d02a0d802a2744 (diff) | |
download | Car-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.java | 44 |
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 |