Merge "Go idle on docking and dreaming intent"
This commit is contained in:
committed by
Android (Google) Code Review
commit
8ac721916f
@@ -45,7 +45,10 @@ import android.app.compat.CompatChanges;
|
||||
import android.companion.virtual.IVirtualDevice;
|
||||
import android.compat.annotation.ChangeId;
|
||||
import android.compat.annotation.EnabledSince;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ParceledListSlice;
|
||||
import android.content.res.Resources;
|
||||
@@ -421,6 +424,32 @@ public final class DisplayManagerService extends SystemService {
|
||||
// Receives notifications about changes to Settings.
|
||||
private SettingsObserver mSettingsObserver;
|
||||
|
||||
// Keeps note of what state the device is in, used for idle screen brightness mode.
|
||||
private boolean mIsDocked;
|
||||
private boolean mIsDreaming;
|
||||
|
||||
private final BroadcastReceiver mIdleModeReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
final DisplayManagerInternal dmi =
|
||||
LocalServices.getService(DisplayManagerInternal.class);
|
||||
if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) {
|
||||
int dockState = intent.getIntExtra(Intent.EXTRA_DOCK_STATE,
|
||||
Intent.EXTRA_DOCK_STATE_UNDOCKED);
|
||||
mIsDocked = dockState == Intent.EXTRA_DOCK_STATE_DESK
|
||||
|| dockState == Intent.EXTRA_DOCK_STATE_LE_DESK
|
||||
|| dockState == Intent.EXTRA_DOCK_STATE_HE_DESK;
|
||||
}
|
||||
if (Intent.ACTION_DREAMING_STARTED.equals(intent.getAction())) {
|
||||
mIsDreaming = true;
|
||||
} else if (Intent.ACTION_DREAMING_STOPPED.equals(intent.getAction())) {
|
||||
mIsDreaming = false;
|
||||
}
|
||||
setDockedAndIdleEnabled(/* enabled= */(mIsDocked && mIsDreaming),
|
||||
Display.DEFAULT_DISPLAY);
|
||||
}
|
||||
};
|
||||
|
||||
private final boolean mAllowNonNativeRefreshRateOverride;
|
||||
|
||||
private final BrightnessSynchronizer mBrightnessSynchronizer;
|
||||
@@ -616,6 +645,13 @@ public final class DisplayManagerService extends SystemService {
|
||||
mSettingsObserver = new SettingsObserver();
|
||||
|
||||
mBrightnessSynchronizer.startSynchronizing();
|
||||
|
||||
final IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(Intent.ACTION_DREAMING_STARTED);
|
||||
filter.addAction(Intent.ACTION_DREAMING_STOPPED);
|
||||
filter.addAction(Intent.ACTION_DOCK_EVENT);
|
||||
|
||||
mContext.registerReceiver(mIdleModeReceiver, filter);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -2096,6 +2132,16 @@ public final class DisplayManagerService extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
void setDockedAndIdleEnabled(boolean enabled, int displayId) {
|
||||
synchronized (mSyncRoot) {
|
||||
final DisplayPowerController displayPowerController = mDisplayPowerControllers.get(
|
||||
displayId);
|
||||
if (displayPowerController != null) {
|
||||
displayPowerController.setAutomaticScreenBrightnessMode(enabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void clearViewportsLocked() {
|
||||
mViewports.clear();
|
||||
}
|
||||
|
||||
@@ -76,6 +76,10 @@ class DisplayManagerShellCommand extends ShellCommand {
|
||||
return setUserDisabledHdrTypes();
|
||||
case "get-user-disabled-hdr-types":
|
||||
return getUserDisabledHdrTypes();
|
||||
case "dock":
|
||||
return setDockedAndIdle();
|
||||
case "undock":
|
||||
return unsetDockedAndIdle();
|
||||
default:
|
||||
return handleDefaultCommands(cmd);
|
||||
}
|
||||
@@ -124,6 +128,10 @@ class DisplayManagerShellCommand extends ShellCommand {
|
||||
pw.println(" Sets the user disabled HDR types as TYPES");
|
||||
pw.println(" get-user-disabled-hdr-types");
|
||||
pw.println(" Returns the user disabled HDR types");
|
||||
pw.println(" dock");
|
||||
pw.println(" Sets brightness to docked + idle screen brightness mode");
|
||||
pw.println(" undock");
|
||||
pw.println(" Sets brightness to active (normal) screen brightness mode");
|
||||
pw.println();
|
||||
Intent.printIntentArgsHelp(pw , "");
|
||||
}
|
||||
@@ -345,4 +353,14 @@ class DisplayManagerShellCommand extends ShellCommand {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
private int setDockedAndIdle() {
|
||||
mService.setDockedAndIdleEnabled(true, Display.DEFAULT_DISPLAY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
private int unsetDockedAndIdle() {
|
||||
mService.setDockedAndIdleEnabled(false, Display.DEFAULT_DISPLAY);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,11 +395,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
@Nullable
|
||||
private BrightnessMappingStrategy mIdleModeBrightnessMapper;
|
||||
|
||||
// If these are both true, and mIdleModeBrightnessMapper != null,
|
||||
// then we are in idle screen brightness mode.
|
||||
private boolean mIsDreaming;
|
||||
private boolean mIsDocked;
|
||||
|
||||
// The current brightness configuration.
|
||||
@Nullable
|
||||
private BrightnessConfiguration mBrightnessConfiguration;
|
||||
|
||||
Reference in New Issue
Block a user