Loading services/core/java/com/android/server/display/DisplayDeviceConfig.java +18 −26 Original line number Diff line number Diff line Loading @@ -515,9 +515,7 @@ public class DisplayDeviceConfig { private final SensorData mScreenOffBrightnessSensor = new SensorData(); // The details of the proximity sensor associated with this display. // Is null when no sensor should be used for that display @Nullable private SensorData mProximitySensor = new SensorData(); private final SensorData mProximitySensor = new SensorData(); private final List<RefreshRateLimitation> mRefreshRateLimitations = new ArrayList<>(2 /*initialCapacity*/); Loading Loading @@ -1339,7 +1337,6 @@ public class DisplayDeviceConfig { return mScreenOffBrightnessSensor; } @Nullable SensorData getProximitySensor() { return mProximitySensor; } Loading Loading @@ -2566,51 +2563,46 @@ public class DisplayDeviceConfig { private void loadAmbientLightSensorFromDdc(DisplayConfiguration config) { final SensorDetails sensorDetails = config.getLightSensor(); if (sensorDetails != null) { loadSensorData(sensorDetails, mAmbientLightSensor); 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(); } } else { loadAmbientLightSensorFromConfigXml(); } } private void setProxSensorUnspecified() { mProximitySensor = new SensorData(); mProximitySensor.name = null; mProximitySensor.type = null; } private void loadScreenOffBrightnessSensorFromDdc(DisplayConfiguration config) { final SensorDetails sensorDetails = config.getScreenOffBrightnessSensor(); if (sensorDetails != null) { loadSensorData(sensorDetails, mScreenOffBrightnessSensor); mScreenOffBrightnessSensor.type = sensorDetails.getType(); mScreenOffBrightnessSensor.name = sensorDetails.getName(); } } private void loadProxSensorFromDdc(DisplayConfiguration config) { SensorDetails sensorDetails = config.getProxSensor(); if (sensorDetails != null) { 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); 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(); } } 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 +11 −5 Original line number Diff line number Diff line Loading @@ -2301,23 +2301,29 @@ 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, mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType); mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name, fallbackType); } private void loadScreenOffBrightnessSensor() { DisplayDeviceConfig.SensorData screenOffBrightnessSensor = mDisplayDeviceConfig.getScreenOffBrightnessSensor(); mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK); screenOffBrightnessSensor.type, screenOffBrightnessSensor.name, SensorUtils.NO_FALLBACK); } private void loadProximitySensor() { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) { return; } mProximitySensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY); final DisplayDeviceConfig.SensorData proxSensor = mDisplayDeviceConfig.getProximitySensor(); mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name, Sensor.TYPE_PROXIMITY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); Loading services/core/java/com/android/server/display/DisplayPowerController2.java +7 −3 Original line number Diff line number Diff line Loading @@ -1948,15 +1948,19 @@ 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, mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType); mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name, fallbackType); } private void loadScreenOffBrightnessSensor() { DisplayDeviceConfig.SensorData screenOffBrightnessSensor = mDisplayDeviceConfig.getScreenOffBrightnessSensor(); mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK); screenOffBrightnessSensor.type, screenOffBrightnessSensor.name, SensorUtils.NO_FALLBACK); } private float clampScreenBrightness(float value) { Loading services/core/java/com/android/server/display/DisplayPowerProximityStateController.java +4 −2 Original line number Diff line number Diff line Loading @@ -358,8 +358,10 @@ public final class DisplayPowerProximityStateController { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) { return; } mProximitySensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY); final DisplayDeviceConfig.SensorData proxSensor = mDisplayDeviceConfig.getProximitySensor(); mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name, 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 +6 −18 Original line number Diff line number Diff line Loading @@ -16,13 +16,10 @@ 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 @@ -31,27 +28,18 @@ import java.util.List; public class SensorUtils { public static final int NO_FALLBACK = 0; /** * Finds the specified sensor for SensorData from DisplayDeviceConfig. */ @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); } } /** * 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) { public static Sensor findSensor(SensorManager sensorManager, String sensorType, String sensorName, int fallbackType) { if (sensorManager == null) { return null; } if ("".equals(sensorName) && "".equals(sensorType)) { return null; } final boolean isNameSpecified = !TextUtils.isEmpty(sensorName); final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType); if (isNameSpecified || isTypeSpecified) { Loading Loading
services/core/java/com/android/server/display/DisplayDeviceConfig.java +18 −26 Original line number Diff line number Diff line Loading @@ -515,9 +515,7 @@ public class DisplayDeviceConfig { private final SensorData mScreenOffBrightnessSensor = new SensorData(); // The details of the proximity sensor associated with this display. // Is null when no sensor should be used for that display @Nullable private SensorData mProximitySensor = new SensorData(); private final SensorData mProximitySensor = new SensorData(); private final List<RefreshRateLimitation> mRefreshRateLimitations = new ArrayList<>(2 /*initialCapacity*/); Loading Loading @@ -1339,7 +1337,6 @@ public class DisplayDeviceConfig { return mScreenOffBrightnessSensor; } @Nullable SensorData getProximitySensor() { return mProximitySensor; } Loading Loading @@ -2566,51 +2563,46 @@ public class DisplayDeviceConfig { private void loadAmbientLightSensorFromDdc(DisplayConfiguration config) { final SensorDetails sensorDetails = config.getLightSensor(); if (sensorDetails != null) { loadSensorData(sensorDetails, mAmbientLightSensor); 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(); } } else { loadAmbientLightSensorFromConfigXml(); } } private void setProxSensorUnspecified() { mProximitySensor = new SensorData(); mProximitySensor.name = null; mProximitySensor.type = null; } private void loadScreenOffBrightnessSensorFromDdc(DisplayConfiguration config) { final SensorDetails sensorDetails = config.getScreenOffBrightnessSensor(); if (sensorDetails != null) { loadSensorData(sensorDetails, mScreenOffBrightnessSensor); mScreenOffBrightnessSensor.type = sensorDetails.getType(); mScreenOffBrightnessSensor.name = sensorDetails.getName(); } } private void loadProxSensorFromDdc(DisplayConfiguration config) { SensorDetails sensorDetails = config.getProxSensor(); if (sensorDetails != null) { 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); 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(); } } 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 +11 −5 Original line number Diff line number Diff line Loading @@ -2301,23 +2301,29 @@ 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, mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType); mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name, fallbackType); } private void loadScreenOffBrightnessSensor() { DisplayDeviceConfig.SensorData screenOffBrightnessSensor = mDisplayDeviceConfig.getScreenOffBrightnessSensor(); mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK); screenOffBrightnessSensor.type, screenOffBrightnessSensor.name, SensorUtils.NO_FALLBACK); } private void loadProximitySensor() { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) { return; } mProximitySensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY); final DisplayDeviceConfig.SensorData proxSensor = mDisplayDeviceConfig.getProximitySensor(); mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name, Sensor.TYPE_PROXIMITY); if (mProximitySensor != null) { mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), TYPICAL_PROXIMITY_THRESHOLD); Loading
services/core/java/com/android/server/display/DisplayPowerController2.java +7 −3 Original line number Diff line number Diff line Loading @@ -1948,15 +1948,19 @@ 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, mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType); mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name, fallbackType); } private void loadScreenOffBrightnessSensor() { DisplayDeviceConfig.SensorData screenOffBrightnessSensor = mDisplayDeviceConfig.getScreenOffBrightnessSensor(); mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK); screenOffBrightnessSensor.type, screenOffBrightnessSensor.name, SensorUtils.NO_FALLBACK); } private float clampScreenBrightness(float value) { Loading
services/core/java/com/android/server/display/DisplayPowerProximityStateController.java +4 −2 Original line number Diff line number Diff line Loading @@ -358,8 +358,10 @@ public final class DisplayPowerProximityStateController { if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) { return; } mProximitySensor = SensorUtils.findSensor(mSensorManager, mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY); final DisplayDeviceConfig.SensorData proxSensor = mDisplayDeviceConfig.getProximitySensor(); mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name, 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 +6 −18 Original line number Diff line number Diff line Loading @@ -16,13 +16,10 @@ 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 @@ -31,27 +28,18 @@ import java.util.List; public class SensorUtils { public static final int NO_FALLBACK = 0; /** * Finds the specified sensor for SensorData from DisplayDeviceConfig. */ @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); } } /** * 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) { public static Sensor findSensor(SensorManager sensorManager, String sensorType, String sensorName, int fallbackType) { if (sensorManager == null) { return null; } if ("".equals(sensorName) && "".equals(sensorType)) { return null; } final boolean isNameSpecified = !TextUtils.isEmpty(sensorName); final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType); if (isNameSpecified || isTypeSpecified) { Loading