Merge "Allow proximity sensor to be specified per display" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
fa50665620
@@ -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;
|
||||
@@ -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.
|
||||
*/
|
||||
@@ -322,6 +329,7 @@ public class DisplayDeviceConfig {
|
||||
+ ", mBrightnessRampSlowDecrease=" + mBrightnessRampSlowDecrease
|
||||
+ ", mBrightnessRampSlowIncrease=" + mBrightnessRampSlowIncrease
|
||||
+ ", mAmbientLightSensor=" + mAmbientLightSensor
|
||||
+ ", mProximitySensor=" + mProximitySensor
|
||||
+ "}";
|
||||
return str;
|
||||
}
|
||||
@@ -374,6 +382,7 @@ public class DisplayDeviceConfig {
|
||||
loadQuirks(config);
|
||||
loadBrightnessRamps(config);
|
||||
loadAmbientLightSensorFromDdc(config);
|
||||
loadProxSensorFromDdc(config);
|
||||
} else {
|
||||
Slog.w(TAG, "DisplayDeviceConfig file is null");
|
||||
}
|
||||
@@ -390,6 +399,7 @@ public class DisplayDeviceConfig {
|
||||
loadBrightnessMapFromConfigXml();
|
||||
loadBrightnessRampsFromConfigXml();
|
||||
loadAmbientLightSensorFromConfigXml();
|
||||
setProxSensorUnspecified();
|
||||
}
|
||||
|
||||
private void initFromDefaultValues() {
|
||||
@@ -403,6 +413,7 @@ public class DisplayDeviceConfig {
|
||||
mBrightnessRampSlowIncrease = PowerManager.BRIGHTNESS_MAX;
|
||||
setSimpleMappingStrategyValues();
|
||||
loadAmbientLightSensorFromConfigXml();
|
||||
setProxSensorUnspecified();
|
||||
}
|
||||
|
||||
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 {
|
||||
public String type;
|
||||
public String name;
|
||||
|
||||
@@ -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();
|
||||
@@ -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);
|
||||
@@ -670,7 +664,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
}
|
||||
}
|
||||
}
|
||||
return mSensorManager.getDefaultSensor(fallbackType);
|
||||
if (useFallback) {
|
||||
return mSensorManager.getDefaultSensor(fallbackType);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -806,6 +804,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mDisplayDeviceConfig = config;
|
||||
|
||||
loadAmbientLightSensor();
|
||||
loadProximitySensor();
|
||||
mHbmController.resetHbmData(token, config.getHighBrightnessModeData());
|
||||
});
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user