diff options
author | Steve Paik <spaik@google.com> | 2018-06-21 18:31:00 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-06-21 18:31:00 +0000 |
commit | de7be61a2dfb41c54550a4edcde65721f38d5422 (patch) | |
tree | e30a768f05baf47493b420c4c1435ecc97c8f3d9 | |
parent | 12eecfd9600c0f48b3652733f60c29e70ad6650b (diff) | |
parent | 8b5ee2c3c7df38b4d6595d62e6adadbc4ad3d733 (diff) | |
download | Car-de7be61a2dfb41c54550a4edcde65721f38d5422.tar.gz |
Merge "Fix display brightness scaling" into pi-dev
-rw-r--r-- | service/Android.mk | 6 | ||||
-rw-r--r-- | service/src/com/android/car/systeminterface/DisplayInterface.java | 44 |
2 files changed, 21 insertions, 29 deletions
diff --git a/service/Android.mk b/service/Android.mk index c03042d60a..d9ae9ecc71 100644 --- a/service/Android.mk +++ b/service/Android.mk @@ -27,6 +27,8 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := $(car_service_sources) +LOCAL_USE_AAPT2 := true + LOCAL_PACKAGE_NAME := CarService LOCAL_PRIVATE_PLATFORM_APIS := true @@ -47,6 +49,8 @@ LOCAL_STATIC_JAVA_LIBRARIES += \ car-systemtest \ com.android.car.procfsinspector-client \ +include frameworks/base/packages/SettingsLib/common.mk + include $(BUILD_PACKAGE) ##################################################################################### @@ -72,6 +76,8 @@ LOCAL_STATIC_JAVA_LIBRARIES += \ car-systemtest \ com.android.car.procfsinspector-client \ +include frameworks/base/packages/SettingsLib/common.mk + include $(BUILD_STATIC_JAVA_LIBRARY) include $(call all-makefiles-under,$(LOCAL_PATH)) 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 |