Loading services/core/java/com/android/server/display/DisplayDeviceConfig.java +26 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,9 @@ public class DisplayDeviceConfig { // The details of the ambient light sensor associated with this display. private final SensorIdentifier mAmbientLightSensor = new SensorIdentifier(); // The details of the proximity sensor associated with this display. private final SensorIdentifier mProximitySensor = new SensorIdentifier(); // Nits and backlight values that are loaded from either the display device config file, or // config.xml. These are the raw values and just used for the dumpsys private float[] mRawNits; Loading Loading @@ -272,6 +275,10 @@ public class DisplayDeviceConfig { return mAmbientLightSensor; } SensorIdentifier getProximitySensor() { return mProximitySensor; } /** * @return true if a nits to backlight mapping is defined in this config, false otherwise. */ Loading Loading @@ -322,6 +329,7 @@ public class DisplayDeviceConfig { + ", mBrightnessRampSlowDecrease=" + mBrightnessRampSlowDecrease + ", mBrightnessRampSlowIncrease=" + mBrightnessRampSlowIncrease + ", mAmbientLightSensor=" + mAmbientLightSensor + ", mProximitySensor=" + mProximitySensor + "}"; return str; } Loading Loading @@ -374,6 +382,7 @@ public class DisplayDeviceConfig { loadQuirks(config); loadBrightnessRamps(config); loadAmbientLightSensorFromDdc(config); loadProxSensorFromDdc(config); } else { Slog.w(TAG, "DisplayDeviceConfig file is null"); } Loading @@ -390,6 +399,7 @@ public class DisplayDeviceConfig { loadBrightnessMapFromConfigXml(); loadBrightnessRampsFromConfigXml(); loadAmbientLightSensorFromConfigXml(); setProxSensorUnspecified(); } private void initFromDefaultValues() { Loading @@ -403,6 +413,7 @@ public class DisplayDeviceConfig { mBrightnessRampSlowIncrease = PowerManager.BRIGHTNESS_MAX; setSimpleMappingStrategyValues(); loadAmbientLightSensorFromConfigXml(); setProxSensorUnspecified(); } private void loadBrightnessDefaultFromDdcXml(DisplayConfiguration config) { Loading Loading @@ -686,6 +697,21 @@ public class DisplayDeviceConfig { } } private void setProxSensorUnspecified() { mProximitySensor.name = ""; mProximitySensor.type = ""; } private void loadProxSensorFromDdc(DisplayConfiguration config) { SensorDetails sensorDetails = config.getProxSensor(); if (sensorDetails != null) { mProximitySensor.name = sensorDetails.getName(); mProximitySensor.type = sensorDetails.getType(); } else { setProxSensorUnspecified(); } } static class SensorIdentifier { public String type; public String name; Loading services/core/java/com/android/server/display/DisplayPowerController.java +28 −12 Original line number Diff line number Diff line Loading @@ -584,15 +584,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessBucketsInDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBrightnessBucketsInDoze); if (mDisplayId == Display.DEFAULT_DISPLAY && !DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) { // TODO: b/178385123 Once there are sensor associations, we can enable proximity for // non-default displays. mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); } } loadProximitySensor(); mCurrentScreenBrightnessSetting = getScreenBrightnessSetting(); mScreenBrightnessForVr = getScreenBrightnessForVrSetting(); mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting(); Loading Loading @@ -658,7 +651,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessMapper.recalculateSplines(mCdsi.isReduceBrightColorsActivated(), adjustedNits); } private Sensor findSensor(String sensorType, String sensorName, int fallbackType) { private Sensor findSensor(String sensorType, String sensorName, int fallbackType, boolean useFallback) { final boolean isNameSpecified = !TextUtils.isEmpty(sensorName); final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType); List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); Loading @@ -670,7 +664,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } } } if (useFallback) { return mSensorManager.getDefaultSensor(fallbackType); } else { return null; } } /** Loading Loading @@ -806,6 +804,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mDisplayDeviceConfig = config; loadAmbientLightSensor(); loadProximitySensor(); mHbmController.resetHbmData(token, config.getHighBrightnessModeData()); }); } Loading Loading @@ -1614,7 +1613,24 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mDisplayDeviceConfig.getAmbientLightSensor(); String lightSensorName = lightSensor.name; String lightSensorType = lightSensor.type; mLightSensor = findSensor(lightSensorType, lightSensorName, Sensor.TYPE_LIGHT); mLightSensor = findSensor(lightSensorType, lightSensorName, Sensor.TYPE_LIGHT, mDisplayId == Display.DEFAULT_DISPLAY); } private void loadProximitySensor() { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) { return; } final DisplayDeviceConfig.SensorIdentifier proxSensor = mDisplayDeviceConfig.getProximitySensor(); final String proxSensorName = proxSensor.name; final String proxSensorType = proxSensor.type; mProximitySensor = findSensor(proxSensorType, proxSensorName, Sensor.TYPE_PROXIMITY, mDisplayId == Display.DEFAULT_DISPLAY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); } } private float clampScreenBrightnessForVr(float value) { Loading services/core/xsd/display-device-config/display-device-config.xsd +3 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,9 @@ <xs:element type="sensorDetails" name="lightSensor"> <xs:annotation name="final"/> </xs:element> <xs:element type="sensorDetails" name="proxSensor"> <xs:annotation name="final"/> </xs:element> </xs:sequence> </xs:complexType> </xs:element> Loading services/core/xsd/display-device-config/schema/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ package com.android.server.display.config { ctor public DisplayConfiguration(); method public com.android.server.display.config.HighBrightnessMode getHighBrightnessMode(); method public final com.android.server.display.config.SensorDetails getLightSensor(); method public final com.android.server.display.config.SensorDetails getProxSensor(); method public com.android.server.display.config.DisplayQuirks getQuirks(); method @NonNull public final java.math.BigDecimal getScreenBrightnessDefault(); method @NonNull public final com.android.server.display.config.NitsMap getScreenBrightnessMap(); Loading @@ -14,6 +15,7 @@ package com.android.server.display.config { method public final java.math.BigDecimal getScreenBrightnessRampSlowIncrease(); method public void setHighBrightnessMode(com.android.server.display.config.HighBrightnessMode); method public final void setLightSensor(com.android.server.display.config.SensorDetails); method public final void setProxSensor(com.android.server.display.config.SensorDetails); method public void setQuirks(com.android.server.display.config.DisplayQuirks); method public final void setScreenBrightnessDefault(@NonNull java.math.BigDecimal); method public final void setScreenBrightnessMap(@NonNull com.android.server.display.config.NitsMap); Loading Loading
services/core/java/com/android/server/display/DisplayDeviceConfig.java +26 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,9 @@ public class DisplayDeviceConfig { // The details of the ambient light sensor associated with this display. private final SensorIdentifier mAmbientLightSensor = new SensorIdentifier(); // The details of the proximity sensor associated with this display. private final SensorIdentifier mProximitySensor = new SensorIdentifier(); // Nits and backlight values that are loaded from either the display device config file, or // config.xml. These are the raw values and just used for the dumpsys private float[] mRawNits; Loading Loading @@ -272,6 +275,10 @@ public class DisplayDeviceConfig { return mAmbientLightSensor; } SensorIdentifier getProximitySensor() { return mProximitySensor; } /** * @return true if a nits to backlight mapping is defined in this config, false otherwise. */ Loading Loading @@ -322,6 +329,7 @@ public class DisplayDeviceConfig { + ", mBrightnessRampSlowDecrease=" + mBrightnessRampSlowDecrease + ", mBrightnessRampSlowIncrease=" + mBrightnessRampSlowIncrease + ", mAmbientLightSensor=" + mAmbientLightSensor + ", mProximitySensor=" + mProximitySensor + "}"; return str; } Loading Loading @@ -374,6 +382,7 @@ public class DisplayDeviceConfig { loadQuirks(config); loadBrightnessRamps(config); loadAmbientLightSensorFromDdc(config); loadProxSensorFromDdc(config); } else { Slog.w(TAG, "DisplayDeviceConfig file is null"); } Loading @@ -390,6 +399,7 @@ public class DisplayDeviceConfig { loadBrightnessMapFromConfigXml(); loadBrightnessRampsFromConfigXml(); loadAmbientLightSensorFromConfigXml(); setProxSensorUnspecified(); } private void initFromDefaultValues() { Loading @@ -403,6 +413,7 @@ public class DisplayDeviceConfig { mBrightnessRampSlowIncrease = PowerManager.BRIGHTNESS_MAX; setSimpleMappingStrategyValues(); loadAmbientLightSensorFromConfigXml(); setProxSensorUnspecified(); } private void loadBrightnessDefaultFromDdcXml(DisplayConfiguration config) { Loading Loading @@ -686,6 +697,21 @@ public class DisplayDeviceConfig { } } private void setProxSensorUnspecified() { mProximitySensor.name = ""; mProximitySensor.type = ""; } private void loadProxSensorFromDdc(DisplayConfiguration config) { SensorDetails sensorDetails = config.getProxSensor(); if (sensorDetails != null) { mProximitySensor.name = sensorDetails.getName(); mProximitySensor.type = sensorDetails.getType(); } else { setProxSensorUnspecified(); } } static class SensorIdentifier { public String type; public String name; Loading
services/core/java/com/android/server/display/DisplayPowerController.java +28 −12 Original line number Diff line number Diff line Loading @@ -584,15 +584,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessBucketsInDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBrightnessBucketsInDoze); if (mDisplayId == Display.DEFAULT_DISPLAY && !DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) { // TODO: b/178385123 Once there are sensor associations, we can enable proximity for // non-default displays. mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); } } loadProximitySensor(); mCurrentScreenBrightnessSetting = getScreenBrightnessSetting(); mScreenBrightnessForVr = getScreenBrightnessForVrSetting(); mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting(); Loading Loading @@ -658,7 +651,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessMapper.recalculateSplines(mCdsi.isReduceBrightColorsActivated(), adjustedNits); } private Sensor findSensor(String sensorType, String sensorName, int fallbackType) { private Sensor findSensor(String sensorType, String sensorName, int fallbackType, boolean useFallback) { final boolean isNameSpecified = !TextUtils.isEmpty(sensorName); final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType); List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); Loading @@ -670,7 +664,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } } } if (useFallback) { return mSensorManager.getDefaultSensor(fallbackType); } else { return null; } } /** Loading Loading @@ -806,6 +804,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mDisplayDeviceConfig = config; loadAmbientLightSensor(); loadProximitySensor(); mHbmController.resetHbmData(token, config.getHighBrightnessModeData()); }); } Loading Loading @@ -1614,7 +1613,24 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mDisplayDeviceConfig.getAmbientLightSensor(); String lightSensorName = lightSensor.name; String lightSensorType = lightSensor.type; mLightSensor = findSensor(lightSensorType, lightSensorName, Sensor.TYPE_LIGHT); mLightSensor = findSensor(lightSensorType, lightSensorName, Sensor.TYPE_LIGHT, mDisplayId == Display.DEFAULT_DISPLAY); } private void loadProximitySensor() { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) { return; } final DisplayDeviceConfig.SensorIdentifier proxSensor = mDisplayDeviceConfig.getProximitySensor(); final String proxSensorName = proxSensor.name; final String proxSensorType = proxSensor.type; mProximitySensor = findSensor(proxSensorType, proxSensorName, Sensor.TYPE_PROXIMITY, mDisplayId == Display.DEFAULT_DISPLAY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); } } private float clampScreenBrightnessForVr(float value) { Loading
services/core/xsd/display-device-config/display-device-config.xsd +3 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,9 @@ <xs:element type="sensorDetails" name="lightSensor"> <xs:annotation name="final"/> </xs:element> <xs:element type="sensorDetails" name="proxSensor"> <xs:annotation name="final"/> </xs:element> </xs:sequence> </xs:complexType> </xs:element> Loading
services/core/xsd/display-device-config/schema/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ package com.android.server.display.config { ctor public DisplayConfiguration(); method public com.android.server.display.config.HighBrightnessMode getHighBrightnessMode(); method public final com.android.server.display.config.SensorDetails getLightSensor(); method public final com.android.server.display.config.SensorDetails getProxSensor(); method public com.android.server.display.config.DisplayQuirks getQuirks(); method @NonNull public final java.math.BigDecimal getScreenBrightnessDefault(); method @NonNull public final com.android.server.display.config.NitsMap getScreenBrightnessMap(); Loading @@ -14,6 +15,7 @@ package com.android.server.display.config { method public final java.math.BigDecimal getScreenBrightnessRampSlowIncrease(); method public void setHighBrightnessMode(com.android.server.display.config.HighBrightnessMode); method public final void setLightSensor(com.android.server.display.config.SensorDetails); method public final void setProxSensor(com.android.server.display.config.SensorDetails); method public void setQuirks(com.android.server.display.config.DisplayQuirks); method public final void setScreenBrightnessDefault(@NonNull java.math.BigDecimal); method public final void setScreenBrightnessMap(@NonNull com.android.server.display.config.NitsMap); Loading