Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6dfee4cd authored by Fiona Campbell's avatar Fiona Campbell Committed by Automerger Merge Worker
Browse files

Merge "Allow proximity sensor to be specified per display" into sc-dev am: fa506656

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14234426

Change-Id: I0e4e02ea33364bff85fbe4eaffddd3c874d0d9b9
parents 851a28e4 fa506656
Loading
Loading
Loading
Loading
+26 −0
Original line number Original line Diff line number Diff line
@@ -79,6 +79,9 @@ public class DisplayDeviceConfig {
    // The details of the ambient light sensor associated with this display.
    // The details of the ambient light sensor associated with this display.
    private final SensorIdentifier mAmbientLightSensor = new SensorIdentifier();
    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
    // 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
    // config.xml. These are the raw values and just used for the dumpsys
    private float[] mRawNits;
    private float[] mRawNits;
@@ -272,6 +275,10 @@ public class DisplayDeviceConfig {
        return mAmbientLightSensor;
        return mAmbientLightSensor;
    }
    }


    SensorIdentifier getProximitySensor() {
        return mProximitySensor;
    }

    /**
    /**
     * @return true if a nits to backlight mapping is defined in this config, false otherwise.
     * @return true if a nits to backlight mapping is defined in this config, false otherwise.
     */
     */
@@ -322,6 +329,7 @@ public class DisplayDeviceConfig {
                + ", mBrightnessRampSlowDecrease=" + mBrightnessRampSlowDecrease
                + ", mBrightnessRampSlowDecrease=" + mBrightnessRampSlowDecrease
                + ", mBrightnessRampSlowIncrease=" + mBrightnessRampSlowIncrease
                + ", mBrightnessRampSlowIncrease=" + mBrightnessRampSlowIncrease
                + ", mAmbientLightSensor=" + mAmbientLightSensor
                + ", mAmbientLightSensor=" + mAmbientLightSensor
                + ", mProximitySensor=" + mProximitySensor
                + "}";
                + "}";
        return str;
        return str;
    }
    }
@@ -374,6 +382,7 @@ public class DisplayDeviceConfig {
                loadQuirks(config);
                loadQuirks(config);
                loadBrightnessRamps(config);
                loadBrightnessRamps(config);
                loadAmbientLightSensorFromDdc(config);
                loadAmbientLightSensorFromDdc(config);
                loadProxSensorFromDdc(config);
            } else {
            } else {
                Slog.w(TAG, "DisplayDeviceConfig file is null");
                Slog.w(TAG, "DisplayDeviceConfig file is null");
            }
            }
@@ -390,6 +399,7 @@ public class DisplayDeviceConfig {
        loadBrightnessMapFromConfigXml();
        loadBrightnessMapFromConfigXml();
        loadBrightnessRampsFromConfigXml();
        loadBrightnessRampsFromConfigXml();
        loadAmbientLightSensorFromConfigXml();
        loadAmbientLightSensorFromConfigXml();
        setProxSensorUnspecified();
    }
    }


    private void initFromDefaultValues() {
    private void initFromDefaultValues() {
@@ -403,6 +413,7 @@ public class DisplayDeviceConfig {
        mBrightnessRampSlowIncrease = PowerManager.BRIGHTNESS_MAX;
        mBrightnessRampSlowIncrease = PowerManager.BRIGHTNESS_MAX;
        setSimpleMappingStrategyValues();
        setSimpleMappingStrategyValues();
        loadAmbientLightSensorFromConfigXml();
        loadAmbientLightSensorFromConfigXml();
        setProxSensorUnspecified();
    }
    }


    private void loadBrightnessDefaultFromDdcXml(DisplayConfiguration config) {
    private void loadBrightnessDefaultFromDdcXml(DisplayConfiguration config) {
@@ -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 {
    static class SensorIdentifier {
        public String type;
        public String type;
        public String name;
        public String name;
+28 −12
Original line number Original line Diff line number Diff line
@@ -584,15 +584,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        mBrightnessBucketsInDozeConfig = resources.getBoolean(
        mBrightnessBucketsInDozeConfig = resources.getBoolean(
                com.android.internal.R.bool.config_displayBrightnessBucketsInDoze);
                com.android.internal.R.bool.config_displayBrightnessBucketsInDoze);


        if (mDisplayId == Display.DEFAULT_DISPLAY && !DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) {
        loadProximitySensor();
            // 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);
            }
        }
        mCurrentScreenBrightnessSetting = getScreenBrightnessSetting();
        mCurrentScreenBrightnessSetting = getScreenBrightnessSetting();
        mScreenBrightnessForVr = getScreenBrightnessForVrSetting();
        mScreenBrightnessForVr = getScreenBrightnessForVrSetting();
        mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting();
        mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting();
@@ -658,7 +651,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        mBrightnessMapper.recalculateSplines(mCdsi.isReduceBrightColorsActivated(), adjustedNits);
        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 isNameSpecified = !TextUtils.isEmpty(sensorName);
        final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType);
        final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType);
        List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
        List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
@@ -670,7 +664,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                }
                }
            }
            }
        }
        }
        if (useFallback) {
            return mSensorManager.getDefaultSensor(fallbackType);
            return mSensorManager.getDefaultSensor(fallbackType);
        } else {
            return null;
        }
    }
    }


    /**
    /**
@@ -806,6 +804,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
            mDisplayDeviceConfig = config;
            mDisplayDeviceConfig = config;


            loadAmbientLightSensor();
            loadAmbientLightSensor();
            loadProximitySensor();
            mHbmController.resetHbmData(token, config.getHighBrightnessModeData());
            mHbmController.resetHbmData(token, config.getHighBrightnessModeData());
        });
        });
    }
    }
@@ -1614,7 +1613,24 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                mDisplayDeviceConfig.getAmbientLightSensor();
                mDisplayDeviceConfig.getAmbientLightSensor();
        String lightSensorName = lightSensor.name;
        String lightSensorName = lightSensor.name;
        String lightSensorType = lightSensor.type;
        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) {
    private float clampScreenBrightnessForVr(float value) {
+3 −0
Original line number Original line Diff line number Diff line
@@ -51,6 +51,9 @@
                <xs:element type="sensorDetails" name="lightSensor">
                <xs:element type="sensorDetails" name="lightSensor">
                    <xs:annotation name="final"/>
                    <xs:annotation name="final"/>
                </xs:element>
                </xs:element>
                <xs:element type="sensorDetails" name="proxSensor">
                    <xs:annotation name="final"/>
                </xs:element>
            </xs:sequence>
            </xs:sequence>
        </xs:complexType>
        </xs:complexType>
    </xs:element>
    </xs:element>
+2 −0
Original line number Original line Diff line number Diff line
@@ -5,6 +5,7 @@ package com.android.server.display.config {
    ctor public DisplayConfiguration();
    ctor public DisplayConfiguration();
    method public com.android.server.display.config.HighBrightnessMode getHighBrightnessMode();
    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 getLightSensor();
    method public final com.android.server.display.config.SensorDetails getProxSensor();
    method public com.android.server.display.config.DisplayQuirks getQuirks();
    method public com.android.server.display.config.DisplayQuirks getQuirks();
    method @NonNull public final java.math.BigDecimal getScreenBrightnessDefault();
    method @NonNull public final java.math.BigDecimal getScreenBrightnessDefault();
    method @NonNull public final com.android.server.display.config.NitsMap getScreenBrightnessMap();
    method @NonNull public final com.android.server.display.config.NitsMap getScreenBrightnessMap();
@@ -14,6 +15,7 @@ package com.android.server.display.config {
    method public final java.math.BigDecimal getScreenBrightnessRampSlowIncrease();
    method public final java.math.BigDecimal getScreenBrightnessRampSlowIncrease();
    method public void setHighBrightnessMode(com.android.server.display.config.HighBrightnessMode);
    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 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 void setQuirks(com.android.server.display.config.DisplayQuirks);
    method public final void setScreenBrightnessDefault(@NonNull java.math.BigDecimal);
    method public final void setScreenBrightnessDefault(@NonNull java.math.BigDecimal);
    method public final void setScreenBrightnessMap(@NonNull com.android.server.display.config.NitsMap);
    method public final void setScreenBrightnessMap(@NonNull com.android.server.display.config.NitsMap);