Merge "Enable per display brightness setting" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
50997aeb8c
@@ -854,8 +854,8 @@ public final class DisplayManager {
|
|||||||
*
|
*
|
||||||
* @hide Requires signature permission.
|
* @hide Requires signature permission.
|
||||||
*/
|
*/
|
||||||
public void setTemporaryBrightness(float brightness) {
|
public void setTemporaryBrightness(int displayId, float brightness) {
|
||||||
mGlobal.setTemporaryBrightness(brightness);
|
mGlobal.setTemporaryBrightness(displayId, brightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -636,13 +636,13 @@ public final class DisplayManagerGlobal {
|
|||||||
* Requires the {@link android.Manifest.permission#CONTROL_DISPLAY_BRIGHTNESS} permission.
|
* Requires the {@link android.Manifest.permission#CONTROL_DISPLAY_BRIGHTNESS} permission.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param brightness The brightness value from 0 to 255.
|
* @param brightness The brightness value from 0.0f to 1.0f.
|
||||||
*
|
*
|
||||||
* @hide Requires signature permission.
|
* @hide Requires signature permission.
|
||||||
*/
|
*/
|
||||||
public void setTemporaryBrightness(float brightness) {
|
public void setTemporaryBrightness(int displayId, float brightness) {
|
||||||
try {
|
try {
|
||||||
mDm.setTemporaryBrightness(brightness);
|
mDm.setTemporaryBrightness(displayId, brightness);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
throw ex.rethrowFromSystemServer();
|
throw ex.rethrowFromSystemServer();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ interface IDisplayManager {
|
|||||||
boolean isMinimalPostProcessingRequested(int displayId);
|
boolean isMinimalPostProcessingRequested(int displayId);
|
||||||
|
|
||||||
// Temporarily sets the display brightness.
|
// Temporarily sets the display brightness.
|
||||||
void setTemporaryBrightness(float brightness);
|
void setTemporaryBrightness(int displayId, float brightness);
|
||||||
|
|
||||||
// Temporarily sets the auto brightness adjustment factor.
|
// Temporarily sets the auto brightness adjustment factor.
|
||||||
void setTemporaryAutoBrightnessAdjustment(float adjustment);
|
void setTemporaryAutoBrightnessAdjustment(float adjustment);
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ public class BrightnessLimit extends Activity implements OnClickListener {
|
|||||||
|
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
DisplayManager dm = getSystemService(DisplayManager.class);
|
DisplayManager dm = getSystemService(DisplayManager.class);
|
||||||
dm.setTemporaryBrightness(0.0f);
|
final int displayId = getBaseContext().getDisplay().getDisplayId();
|
||||||
|
dm.setTemporaryBrightness(displayId, 0.0f);
|
||||||
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 0);
|
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ public class BrightnessController implements ToggleSlider.Listener {
|
|||||||
private final float mMaximumBacklightForVr;
|
private final float mMaximumBacklightForVr;
|
||||||
private final float mDefaultBacklightForVr;
|
private final float mDefaultBacklightForVr;
|
||||||
|
|
||||||
|
private final int mDisplayId;
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final ToggleSlider mControl;
|
private final ToggleSlider mControl;
|
||||||
private final boolean mAutomaticAvailable;
|
private final boolean mAutomaticAvailable;
|
||||||
@@ -311,6 +312,7 @@ public class BrightnessController implements ToggleSlider.Listener {
|
|||||||
};
|
};
|
||||||
mBrightnessObserver = new BrightnessObserver(mHandler);
|
mBrightnessObserver = new BrightnessObserver(mHandler);
|
||||||
|
|
||||||
|
mDisplayId = mContext.getDisplayId();
|
||||||
PowerManager pm = context.getSystemService(PowerManager.class);
|
PowerManager pm = context.getSystemService(PowerManager.class);
|
||||||
mMinimumBacklight = pm.getBrightnessConstraint(
|
mMinimumBacklight = pm.getBrightnessConstraint(
|
||||||
PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);
|
PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);
|
||||||
@@ -420,7 +422,7 @@ public class BrightnessController implements ToggleSlider.Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setBrightness(float brightness) {
|
private void setBrightness(float brightness) {
|
||||||
mDisplayManager.setTemporaryBrightness(brightness);
|
mDisplayManager.setTemporaryBrightness(mDisplayId, brightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateVrMode(boolean isEnabled) {
|
private void updateVrMode(boolean isEnabled) {
|
||||||
|
|||||||
@@ -2579,14 +2579,14 @@ public final class DisplayManagerService extends SystemService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override // Binder call
|
@Override // Binder call
|
||||||
public void setTemporaryBrightness(float brightness) {
|
public void setTemporaryBrightness(int displayId, float brightness) {
|
||||||
mContext.enforceCallingOrSelfPermission(
|
mContext.enforceCallingOrSelfPermission(
|
||||||
Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS,
|
Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS,
|
||||||
"Permission required to set the display's brightness");
|
"Permission required to set the display's brightness");
|
||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
synchronized (mSyncRoot) {
|
synchronized (mSyncRoot) {
|
||||||
mDisplayPowerControllers.get(Display.DEFAULT_DISPLAY)
|
mDisplayPowerControllers.get(displayId)
|
||||||
.setTemporaryBrightness(brightness);
|
.setTemporaryBrightness(brightness);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -34,12 +34,14 @@ class ColorModeControls : LinearLayout, WindowObserver {
|
|||||||
constructor(context: Context) : this(context, null)
|
constructor(context: Context) : this(context, null)
|
||||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||||
displayManager = context.getSystemService(DisplayManager::class.java)!!
|
displayManager = context.getSystemService(DisplayManager::class.java)!!
|
||||||
|
displayId = context.getDisplayId()
|
||||||
}
|
}
|
||||||
|
|
||||||
private var window: Window? = null
|
private var window: Window? = null
|
||||||
private var currentModeDisplay: TextView? = null
|
private var currentModeDisplay: TextView? = null
|
||||||
private val displayManager: DisplayManager
|
private val displayManager: DisplayManager
|
||||||
private var targetSdrWhitePointIndex = 0
|
private var targetSdrWhitePointIndex = 0
|
||||||
|
private var displayId: Int
|
||||||
|
|
||||||
private val whitePoint get() = SDR_WHITE_POINTS[targetSdrWhitePointIndex]
|
private val whitePoint get() = SDR_WHITE_POINTS[targetSdrWhitePointIndex]
|
||||||
|
|
||||||
@@ -107,7 +109,7 @@ class ColorModeControls : LinearLayout, WindowObserver {
|
|||||||
// Imperfect, but close enough, synchronization by waiting for frame commit to set the value
|
// Imperfect, but close enough, synchronization by waiting for frame commit to set the value
|
||||||
viewTreeObserver.registerFrameCommitCallback {
|
viewTreeObserver.registerFrameCommitCallback {
|
||||||
try {
|
try {
|
||||||
displayManager.setTemporaryBrightness(level)
|
displayManager.setTemporaryBrightness(displayId, level)
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
// Ignore a permission denied rejection - it doesn't meaningfully change much
|
// Ignore a permission denied rejection - it doesn't meaningfully change much
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user