Loading services/core/java/com/android/server/display/DisplayDeviceConfig.java +26 −18 Original line number Diff line number Diff line Loading @@ -515,7 +515,9 @@ public class DisplayDeviceConfig { private final SensorData mScreenOffBrightnessSensor = new SensorData(); // The details of the proximity sensor associated with this display. private final SensorData mProximitySensor = new SensorData(); // Is null when no sensor should be used for that display @Nullable private SensorData mProximitySensor = new SensorData(); private final List<RefreshRateLimitation> mRefreshRateLimitations = new ArrayList<>(2 /*initialCapacity*/); Loading Loading @@ -1337,6 +1339,7 @@ public class DisplayDeviceConfig { return mScreenOffBrightnessSensor; } @Nullable SensorData getProximitySensor() { return mProximitySensor; } Loading Loading @@ -2563,46 +2566,51 @@ public class DisplayDeviceConfig { private void loadAmbientLightSensorFromDdc(DisplayConfiguration config) { final SensorDetails sensorDetails = config.getLightSensor(); if (sensorDetails != null) { mAmbientLightSensor.type = sensorDetails.getType(); mAmbientLightSensor.name = sensorDetails.getName(); final RefreshRateRange rr = sensorDetails.getRefreshRate(); if (rr != null) { mAmbientLightSensor.minRefreshRate = rr.getMinimum().floatValue(); mAmbientLightSensor.maxRefreshRate = rr.getMaximum().floatValue(); } loadSensorData(sensorDetails, mAmbientLightSensor); } else { loadAmbientLightSensorFromConfigXml(); } } private void setProxSensorUnspecified() { mProximitySensor.name = null; mProximitySensor.type = null; mProximitySensor = new SensorData(); } private void loadScreenOffBrightnessSensorFromDdc(DisplayConfiguration config) { final SensorDetails sensorDetails = config.getScreenOffBrightnessSensor(); if (sensorDetails != null) { mScreenOffBrightnessSensor.type = sensorDetails.getType(); mScreenOffBrightnessSensor.name = sensorDetails.getName(); loadSensorData(sensorDetails, mScreenOffBrightnessSensor); } } private void loadProxSensorFromDdc(DisplayConfiguration config) { SensorDetails sensorDetails = config.getProxSensor(); if (sensorDetails != null) { mProximitySensor.name = sensorDetails.getName(); mProximitySensor.type = sensorDetails.getType(); final RefreshRateRange rr = sensorDetails.getRefreshRate(); if (rr != null) { mProximitySensor.minRefreshRate = rr.getMinimum().floatValue(); mProximitySensor.maxRefreshRate = rr.getMaximum().floatValue(); String name = sensorDetails.getName(); String type = sensorDetails.getType(); if ("".equals(name) && "".equals(type)) { // <proxSensor> with empty values to the config means no sensor should be used mProximitySensor = null; } else { mProximitySensor = new SensorData(); loadSensorData(sensorDetails, mProximitySensor); } } else { setProxSensorUnspecified(); } } private void loadSensorData(@NonNull SensorDetails sensorDetails, @NonNull SensorData sensorData) { sensorData.name = sensorDetails.getName(); sensorData.type = sensorDetails.getType(); final RefreshRateRange rr = sensorDetails.getRefreshRate(); if (rr != null) { sensorData.minRefreshRate = rr.getMinimum().floatValue(); sensorData.maxRefreshRate = rr.getMaximum().floatValue(); } } private void loadBrightnessChangeThresholdsFromXml() { loadBrightnessChangeThresholds(/* config= */ null); } Loading services/core/java/com/android/server/display/DisplayPowerController.java +5 −11 Original line number Diff line number Diff line Loading @@ -2301,29 +2301,23 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } private void loadAmbientLightSensor() { DisplayDeviceConfig.SensorData lightSensor = mDisplayDeviceConfig.getAmbientLightSensor(); final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK; mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name, fallbackType); mLightSensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType); } private void loadScreenOffBrightnessSensor() { DisplayDeviceConfig.SensorData screenOffBrightnessSensor = mDisplayDeviceConfig.getScreenOffBrightnessSensor(); mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager, screenOffBrightnessSensor.type, screenOffBrightnessSensor.name, SensorUtils.NO_FALLBACK); mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK); } private void loadProximitySensor() { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) { return; } final DisplayDeviceConfig.SensorData proxSensor = mDisplayDeviceConfig.getProximitySensor(); mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name, Sensor.TYPE_PROXIMITY); mProximitySensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); Loading services/core/java/com/android/server/display/DisplayPowerController2.java +3 −7 Original line number Diff line number Diff line Loading @@ -1948,19 +1948,15 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal } private void loadAmbientLightSensor() { DisplayDeviceConfig.SensorData lightSensor = mDisplayDeviceConfig.getAmbientLightSensor(); final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK; mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name, fallbackType); mLightSensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType); } private void loadScreenOffBrightnessSensor() { DisplayDeviceConfig.SensorData screenOffBrightnessSensor = mDisplayDeviceConfig.getScreenOffBrightnessSensor(); mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager, screenOffBrightnessSensor.type, screenOffBrightnessSensor.name, SensorUtils.NO_FALLBACK); mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK); } private float clampScreenBrightness(float value) { Loading services/core/java/com/android/server/display/DisplayPowerProximityStateController.java +2 −4 Original line number Diff line number Diff line Loading @@ -358,10 +358,8 @@ public final class DisplayPowerProximityStateController { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) { return; } final DisplayDeviceConfig.SensorData proxSensor = mDisplayDeviceConfig.getProximitySensor(); mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name, Sensor.TYPE_PROXIMITY); mProximitySensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); Loading services/core/java/com/android/server/display/utils/SensorUtils.java +18 −6 Original line number Diff line number Diff line Loading @@ -16,10 +16,13 @@ package com.android.server.display.utils; import android.annotation.Nullable; import android.hardware.Sensor; import android.hardware.SensorManager; import android.text.TextUtils; import com.android.server.display.DisplayDeviceConfig; import java.util.List; /** Loading @@ -29,15 +32,24 @@ public class SensorUtils { public static final int NO_FALLBACK = 0; /** * Finds the specified sensor by type and name using SensorManager. * Finds the specified sensor for SensorData from DisplayDeviceConfig. */ public static Sensor findSensor(SensorManager sensorManager, String sensorType, String sensorName, int fallbackType) { if (sensorManager == null) { @Nullable public static Sensor findSensor(@Nullable SensorManager sensorManager, @Nullable DisplayDeviceConfig.SensorData sensorData, int fallbackType) { if (sensorData == null) { return null; } else { return findSensor(sensorManager, sensorData.type, sensorData.name, fallbackType); } if ("".equals(sensorName) && "".equals(sensorType)) { } /** * Finds the specified sensor by type and name using SensorManager. */ @Nullable public static Sensor findSensor(@Nullable SensorManager sensorManager, @Nullable String sensorType, @Nullable String sensorName, int fallbackType) { if (sensorManager == null) { return null; } final boolean isNameSpecified = !TextUtils.isEmpty(sensorName); Loading Loading
services/core/java/com/android/server/display/DisplayDeviceConfig.java +26 −18 Original line number Diff line number Diff line Loading @@ -515,7 +515,9 @@ public class DisplayDeviceConfig { private final SensorData mScreenOffBrightnessSensor = new SensorData(); // The details of the proximity sensor associated with this display. private final SensorData mProximitySensor = new SensorData(); // Is null when no sensor should be used for that display @Nullable private SensorData mProximitySensor = new SensorData(); private final List<RefreshRateLimitation> mRefreshRateLimitations = new ArrayList<>(2 /*initialCapacity*/); Loading Loading @@ -1337,6 +1339,7 @@ public class DisplayDeviceConfig { return mScreenOffBrightnessSensor; } @Nullable SensorData getProximitySensor() { return mProximitySensor; } Loading Loading @@ -2563,46 +2566,51 @@ public class DisplayDeviceConfig { private void loadAmbientLightSensorFromDdc(DisplayConfiguration config) { final SensorDetails sensorDetails = config.getLightSensor(); if (sensorDetails != null) { mAmbientLightSensor.type = sensorDetails.getType(); mAmbientLightSensor.name = sensorDetails.getName(); final RefreshRateRange rr = sensorDetails.getRefreshRate(); if (rr != null) { mAmbientLightSensor.minRefreshRate = rr.getMinimum().floatValue(); mAmbientLightSensor.maxRefreshRate = rr.getMaximum().floatValue(); } loadSensorData(sensorDetails, mAmbientLightSensor); } else { loadAmbientLightSensorFromConfigXml(); } } private void setProxSensorUnspecified() { mProximitySensor.name = null; mProximitySensor.type = null; mProximitySensor = new SensorData(); } private void loadScreenOffBrightnessSensorFromDdc(DisplayConfiguration config) { final SensorDetails sensorDetails = config.getScreenOffBrightnessSensor(); if (sensorDetails != null) { mScreenOffBrightnessSensor.type = sensorDetails.getType(); mScreenOffBrightnessSensor.name = sensorDetails.getName(); loadSensorData(sensorDetails, mScreenOffBrightnessSensor); } } private void loadProxSensorFromDdc(DisplayConfiguration config) { SensorDetails sensorDetails = config.getProxSensor(); if (sensorDetails != null) { mProximitySensor.name = sensorDetails.getName(); mProximitySensor.type = sensorDetails.getType(); final RefreshRateRange rr = sensorDetails.getRefreshRate(); if (rr != null) { mProximitySensor.minRefreshRate = rr.getMinimum().floatValue(); mProximitySensor.maxRefreshRate = rr.getMaximum().floatValue(); String name = sensorDetails.getName(); String type = sensorDetails.getType(); if ("".equals(name) && "".equals(type)) { // <proxSensor> with empty values to the config means no sensor should be used mProximitySensor = null; } else { mProximitySensor = new SensorData(); loadSensorData(sensorDetails, mProximitySensor); } } else { setProxSensorUnspecified(); } } private void loadSensorData(@NonNull SensorDetails sensorDetails, @NonNull SensorData sensorData) { sensorData.name = sensorDetails.getName(); sensorData.type = sensorDetails.getType(); final RefreshRateRange rr = sensorDetails.getRefreshRate(); if (rr != null) { sensorData.minRefreshRate = rr.getMinimum().floatValue(); sensorData.maxRefreshRate = rr.getMaximum().floatValue(); } } private void loadBrightnessChangeThresholdsFromXml() { loadBrightnessChangeThresholds(/* config= */ null); } Loading
services/core/java/com/android/server/display/DisplayPowerController.java +5 −11 Original line number Diff line number Diff line Loading @@ -2301,29 +2301,23 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } private void loadAmbientLightSensor() { DisplayDeviceConfig.SensorData lightSensor = mDisplayDeviceConfig.getAmbientLightSensor(); final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK; mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name, fallbackType); mLightSensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType); } private void loadScreenOffBrightnessSensor() { DisplayDeviceConfig.SensorData screenOffBrightnessSensor = mDisplayDeviceConfig.getScreenOffBrightnessSensor(); mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager, screenOffBrightnessSensor.type, screenOffBrightnessSensor.name, SensorUtils.NO_FALLBACK); mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK); } private void loadProximitySensor() { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) { return; } final DisplayDeviceConfig.SensorData proxSensor = mDisplayDeviceConfig.getProximitySensor(); mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name, Sensor.TYPE_PROXIMITY); mProximitySensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); Loading
services/core/java/com/android/server/display/DisplayPowerController2.java +3 −7 Original line number Diff line number Diff line Loading @@ -1948,19 +1948,15 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal } private void loadAmbientLightSensor() { DisplayDeviceConfig.SensorData lightSensor = mDisplayDeviceConfig.getAmbientLightSensor(); final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK; mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name, fallbackType); mLightSensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType); } private void loadScreenOffBrightnessSensor() { DisplayDeviceConfig.SensorData screenOffBrightnessSensor = mDisplayDeviceConfig.getScreenOffBrightnessSensor(); mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager, screenOffBrightnessSensor.type, screenOffBrightnessSensor.name, SensorUtils.NO_FALLBACK); mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK); } private float clampScreenBrightness(float value) { Loading
services/core/java/com/android/server/display/DisplayPowerProximityStateController.java +2 −4 Original line number Diff line number Diff line Loading @@ -358,10 +358,8 @@ public final class DisplayPowerProximityStateController { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) { return; } final DisplayDeviceConfig.SensorData proxSensor = mDisplayDeviceConfig.getProximitySensor(); mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name, Sensor.TYPE_PROXIMITY); mProximitySensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); Loading
services/core/java/com/android/server/display/utils/SensorUtils.java +18 −6 Original line number Diff line number Diff line Loading @@ -16,10 +16,13 @@ package com.android.server.display.utils; import android.annotation.Nullable; import android.hardware.Sensor; import android.hardware.SensorManager; import android.text.TextUtils; import com.android.server.display.DisplayDeviceConfig; import java.util.List; /** Loading @@ -29,15 +32,24 @@ public class SensorUtils { public static final int NO_FALLBACK = 0; /** * Finds the specified sensor by type and name using SensorManager. * Finds the specified sensor for SensorData from DisplayDeviceConfig. */ public static Sensor findSensor(SensorManager sensorManager, String sensorType, String sensorName, int fallbackType) { if (sensorManager == null) { @Nullable public static Sensor findSensor(@Nullable SensorManager sensorManager, @Nullable DisplayDeviceConfig.SensorData sensorData, int fallbackType) { if (sensorData == null) { return null; } else { return findSensor(sensorManager, sensorData.type, sensorData.name, fallbackType); } if ("".equals(sensorName) && "".equals(sensorType)) { } /** * Finds the specified sensor by type and name using SensorManager. */ @Nullable public static Sensor findSensor(@Nullable SensorManager sensorManager, @Nullable String sensorType, @Nullable String sensorName, int fallbackType) { if (sensorManager == null) { return null; } final boolean isNameSpecified = !TextUtils.isEmpty(sensorName); Loading