Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,7 @@ java_defaults { "core/java/android/hardware/biometrics/IBiometricServiceReceiver.aidl", "core/java/android/hardware/biometrics/IBiometricServiceReceiverInternal.aidl", "core/java/android/hardware/biometrics/IBiometricServiceLockoutResetCallback.aidl", "core/java/android/hardware/display/IColorDisplayManager.aidl", "core/java/android/hardware/display/IDisplayManager.aidl", "core/java/android/hardware/display/IDisplayManagerCallback.aidl", "core/java/android/hardware/display/IVirtualDisplayCallback.aidl", Loading api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ package android { field public static final java.lang.String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS"; field public static final java.lang.String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL"; field public static final java.lang.String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"; field public static final java.lang.String CONTROL_DISPLAY_COLOR_TRANSFORMS = "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS"; field public static final java.lang.String CONTROL_DISPLAY_SATURATION = "android.permission.CONTROL_DISPLAY_SATURATION"; field public static final java.lang.String CONTROL_INCALL_EXPERIENCE = "android.permission.CONTROL_INCALL_EXPERIENCE"; field public static final java.lang.String CONTROL_KEYGUARD_SECURE_NOTIFICATIONS = "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS"; Loading core/java/android/app/SystemServiceRegistry.java +9 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ import android.hardware.SystemSensorManager; import android.hardware.biometrics.BiometricManager; import android.hardware.biometrics.IBiometricService; import android.hardware.camera2.CameraManager; import android.hardware.display.ColorDisplayManager; import android.hardware.display.DisplayManager; import android.hardware.face.FaceManager; import android.hardware.face.IFaceService; Loading Loading @@ -386,6 +387,14 @@ final class SystemServiceRegistry { return new DisplayManager(ctx.getOuterContext()); }}); registerService(Context.COLOR_DISPLAY_SERVICE, ColorDisplayManager.class, new CachedServiceFetcher<ColorDisplayManager>() { @Override public ColorDisplayManager createService(ContextImpl ctx) { return new ColorDisplayManager(); } }); // InputMethodManager has its own cache strategy based on display id to support apps that // still assume InputMethodManager is a per-process singleton and it's safe to directly // access internal fields via reflection. Hence directly use ServiceFetcher instead of Loading core/java/android/content/Context.java +11 −0 Original line number Diff line number Diff line Loading @@ -3126,6 +3126,7 @@ public abstract class Context { //@hide: HDMI_CONTROL_SERVICE, INPUT_SERVICE, DISPLAY_SERVICE, //@hide COLOR_DISPLAY_SERVICE, USER_SERVICE, RESTRICTIONS_SERVICE, APP_OPS_SERVICE, Loading Loading @@ -4106,6 +4107,16 @@ public abstract class Context { */ public static final String DISPLAY_SERVICE = "display"; /** * Use with {@link #getSystemService(String)} to retrieve a * {@link android.hardware.display.ColorDisplayManager} for controlling color transforms. * * @see #getSystemService(String) * @see android.hardware.display.ColorDisplayManager * @hide */ public static final String COLOR_DISPLAY_SERVICE = "color_display"; /** * Use with {@link #getSystemService(String)} to retrieve a * {@link android.os.UserManager} for managing users on devices that support multiple users. Loading core/java/android/hardware/display/ColorDisplayManager.java +61 −0 Original line number Diff line number Diff line Loading @@ -16,20 +16,81 @@ package android.hardware.display; import android.annotation.RequiresPermission; import android.annotation.SystemService; import android.content.Context; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager.ServiceNotFoundException; import com.android.internal.R; /** * Manages the display's color transforms and modes. * * @hide */ @SystemService(Context.COLOR_DISPLAY_SERVICE) public final class ColorDisplayManager { private final ColorDisplayManagerInternal mManager; /** * @hide */ public ColorDisplayManager() { mManager = ColorDisplayManagerInternal.getInstance(); } /** * Returns whether the device has a wide color gamut display. * * @hide */ @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean isDeviceColorManaged() { return mManager.isDeviceColorManaged(); } /** * Returns {@code true} if Night Display is supported by the device. */ public static boolean isNightDisplayAvailable(Context context) { return context.getResources().getBoolean(R.bool.config_nightDisplayAvailable); } private static class ColorDisplayManagerInternal { private static ColorDisplayManagerInternal sInstance; private final IColorDisplayManager mCdm; private ColorDisplayManagerInternal(IColorDisplayManager colorDisplayManager) { mCdm = colorDisplayManager; } public static ColorDisplayManagerInternal getInstance() { synchronized (ColorDisplayManagerInternal.class) { if (sInstance == null) { try { IBinder b = ServiceManager.getServiceOrThrow(Context.COLOR_DISPLAY_SERVICE); sInstance = new ColorDisplayManagerInternal( IColorDisplayManager.Stub.asInterface(b)); } catch (ServiceNotFoundException e) { throw new IllegalStateException(e); } } return sInstance; } } boolean isDeviceColorManaged() { try { return mCdm.isDeviceColorManaged(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } } } Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,7 @@ java_defaults { "core/java/android/hardware/biometrics/IBiometricServiceReceiver.aidl", "core/java/android/hardware/biometrics/IBiometricServiceReceiverInternal.aidl", "core/java/android/hardware/biometrics/IBiometricServiceLockoutResetCallback.aidl", "core/java/android/hardware/display/IColorDisplayManager.aidl", "core/java/android/hardware/display/IDisplayManager.aidl", "core/java/android/hardware/display/IDisplayManagerCallback.aidl", "core/java/android/hardware/display/IVirtualDisplayCallback.aidl", Loading
api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ package android { field public static final java.lang.String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS"; field public static final java.lang.String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL"; field public static final java.lang.String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"; field public static final java.lang.String CONTROL_DISPLAY_COLOR_TRANSFORMS = "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS"; field public static final java.lang.String CONTROL_DISPLAY_SATURATION = "android.permission.CONTROL_DISPLAY_SATURATION"; field public static final java.lang.String CONTROL_INCALL_EXPERIENCE = "android.permission.CONTROL_INCALL_EXPERIENCE"; field public static final java.lang.String CONTROL_KEYGUARD_SECURE_NOTIFICATIONS = "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS"; Loading
core/java/android/app/SystemServiceRegistry.java +9 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ import android.hardware.SystemSensorManager; import android.hardware.biometrics.BiometricManager; import android.hardware.biometrics.IBiometricService; import android.hardware.camera2.CameraManager; import android.hardware.display.ColorDisplayManager; import android.hardware.display.DisplayManager; import android.hardware.face.FaceManager; import android.hardware.face.IFaceService; Loading Loading @@ -386,6 +387,14 @@ final class SystemServiceRegistry { return new DisplayManager(ctx.getOuterContext()); }}); registerService(Context.COLOR_DISPLAY_SERVICE, ColorDisplayManager.class, new CachedServiceFetcher<ColorDisplayManager>() { @Override public ColorDisplayManager createService(ContextImpl ctx) { return new ColorDisplayManager(); } }); // InputMethodManager has its own cache strategy based on display id to support apps that // still assume InputMethodManager is a per-process singleton and it's safe to directly // access internal fields via reflection. Hence directly use ServiceFetcher instead of Loading
core/java/android/content/Context.java +11 −0 Original line number Diff line number Diff line Loading @@ -3126,6 +3126,7 @@ public abstract class Context { //@hide: HDMI_CONTROL_SERVICE, INPUT_SERVICE, DISPLAY_SERVICE, //@hide COLOR_DISPLAY_SERVICE, USER_SERVICE, RESTRICTIONS_SERVICE, APP_OPS_SERVICE, Loading Loading @@ -4106,6 +4107,16 @@ public abstract class Context { */ public static final String DISPLAY_SERVICE = "display"; /** * Use with {@link #getSystemService(String)} to retrieve a * {@link android.hardware.display.ColorDisplayManager} for controlling color transforms. * * @see #getSystemService(String) * @see android.hardware.display.ColorDisplayManager * @hide */ public static final String COLOR_DISPLAY_SERVICE = "color_display"; /** * Use with {@link #getSystemService(String)} to retrieve a * {@link android.os.UserManager} for managing users on devices that support multiple users. Loading
core/java/android/hardware/display/ColorDisplayManager.java +61 −0 Original line number Diff line number Diff line Loading @@ -16,20 +16,81 @@ package android.hardware.display; import android.annotation.RequiresPermission; import android.annotation.SystemService; import android.content.Context; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager.ServiceNotFoundException; import com.android.internal.R; /** * Manages the display's color transforms and modes. * * @hide */ @SystemService(Context.COLOR_DISPLAY_SERVICE) public final class ColorDisplayManager { private final ColorDisplayManagerInternal mManager; /** * @hide */ public ColorDisplayManager() { mManager = ColorDisplayManagerInternal.getInstance(); } /** * Returns whether the device has a wide color gamut display. * * @hide */ @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean isDeviceColorManaged() { return mManager.isDeviceColorManaged(); } /** * Returns {@code true} if Night Display is supported by the device. */ public static boolean isNightDisplayAvailable(Context context) { return context.getResources().getBoolean(R.bool.config_nightDisplayAvailable); } private static class ColorDisplayManagerInternal { private static ColorDisplayManagerInternal sInstance; private final IColorDisplayManager mCdm; private ColorDisplayManagerInternal(IColorDisplayManager colorDisplayManager) { mCdm = colorDisplayManager; } public static ColorDisplayManagerInternal getInstance() { synchronized (ColorDisplayManagerInternal.class) { if (sInstance == null) { try { IBinder b = ServiceManager.getServiceOrThrow(Context.COLOR_DISPLAY_SERVICE); sInstance = new ColorDisplayManagerInternal( IColorDisplayManager.Stub.asInterface(b)); } catch (ServiceNotFoundException e) { throw new IllegalStateException(e); } } return sInstance; } } boolean isDeviceColorManaged() { try { return mCdm.isDeviceColorManaged(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } } }