Loading packages/SettingsLib/DisplayUtils/Android.bp +0 −2 Original line number Original line Diff line number Diff line Loading @@ -15,6 +15,4 @@ android_library { ], ], srcs: ["src/**/*.java"], srcs: ["src/**/*.java"], min_sdk_version: "21", } } packages/SettingsLib/DisplayUtils/src/com/android/settingslib/display/DisplayDensityConfiguration.java +45 −0 Original line number Original line Diff line number Diff line Loading @@ -16,13 +16,20 @@ package com.android.settingslib.display; package com.android.settingslib.display; import android.annotation.NonNull; import android.content.Context; import android.hardware.display.DisplayManager; import android.os.AsyncTask; import android.os.AsyncTask; import android.os.RemoteException; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserHandle; import android.util.Log; import android.util.Log; import android.view.Display; import android.view.DisplayInfo; import android.view.IWindowManager; import android.view.IWindowManager; import android.view.WindowManagerGlobal; import android.view.WindowManagerGlobal; import java.util.function.Predicate; /** Utility methods for controlling the display density. */ /** Utility methods for controlling the display density. */ public class DisplayDensityConfiguration { public class DisplayDensityConfiguration { private static final String LOG_TAG = "DisplayDensityConfig"; private static final String LOG_TAG = "DisplayDensityConfig"; Loading Loading @@ -85,4 +92,42 @@ public class DisplayDensityConfiguration { } } }); }); } } /** * Asynchronously applies display density changes to all displays that satisfy the predicate. * * <p>The change will be applied to the user specified by the value of * {@link UserHandle#myUserId()} at the time the method is called. * * @param context The context * @param predicate Determines which displays to set the density to * @param density The density to force */ public static void setForcedDisplayDensity(@NonNull Context context, @NonNull Predicate<DisplayInfo> predicate, final int density) { final int userId = UserHandle.myUserId(); DisplayManager dm = context.getSystemService(DisplayManager.class); AsyncTask.execute(() -> { try { for (Display display : dm.getDisplays( DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED)) { int displayId = display.getDisplayId(); DisplayInfo info = new DisplayInfo(); if (!display.getDisplayInfo(info)) { Log.w(LOG_TAG, "Unable to save forced display density setting " + "for display " + displayId); continue; } if (!predicate.test(info)) { continue; } final IWindowManager wm = WindowManagerGlobal.getWindowManagerService(); wm.setForcedDisplayDensityForUser(displayId, density, userId); } } catch (RemoteException exc) { Log.w(LOG_TAG, "Unable to save forced display density setting"); } }); } } } packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -89,6 +89,7 @@ import java.io.OutputStream; import java.time.DateTimeException; import java.time.DateTimeException; import java.util.Arrays; import java.util.Arrays; import java.util.Collections; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.HashSet; import java.util.Map; import java.util.Map; import java.util.Objects; import java.util.Objects; Loading @@ -97,7 +98,6 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; import java.util.function.Consumer; import java.util.HashMap; import java.util.zip.CRC32; import java.util.zip.CRC32; /** /** Loading Loading @@ -1753,8 +1753,8 @@ public class SettingsBackupAgent extends BackupAgentHelper { if (previousDensity == null || previousDensity != newDensity) { if (previousDensity == null || previousDensity != newDensity) { // From nothing to something is a change. // From nothing to something is a change. DisplayDensityConfiguration.setForcedDisplayDensity( DisplayDensityConfiguration.setForcedDisplayDensity(getBaseContext(), Display.DEFAULT_DISPLAY, newDensity); info -> info.type == Display.TYPE_INTERNAL, newDensity); } } } } Loading Loading
packages/SettingsLib/DisplayUtils/Android.bp +0 −2 Original line number Original line Diff line number Diff line Loading @@ -15,6 +15,4 @@ android_library { ], ], srcs: ["src/**/*.java"], srcs: ["src/**/*.java"], min_sdk_version: "21", } }
packages/SettingsLib/DisplayUtils/src/com/android/settingslib/display/DisplayDensityConfiguration.java +45 −0 Original line number Original line Diff line number Diff line Loading @@ -16,13 +16,20 @@ package com.android.settingslib.display; package com.android.settingslib.display; import android.annotation.NonNull; import android.content.Context; import android.hardware.display.DisplayManager; import android.os.AsyncTask; import android.os.AsyncTask; import android.os.RemoteException; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserHandle; import android.util.Log; import android.util.Log; import android.view.Display; import android.view.DisplayInfo; import android.view.IWindowManager; import android.view.IWindowManager; import android.view.WindowManagerGlobal; import android.view.WindowManagerGlobal; import java.util.function.Predicate; /** Utility methods for controlling the display density. */ /** Utility methods for controlling the display density. */ public class DisplayDensityConfiguration { public class DisplayDensityConfiguration { private static final String LOG_TAG = "DisplayDensityConfig"; private static final String LOG_TAG = "DisplayDensityConfig"; Loading Loading @@ -85,4 +92,42 @@ public class DisplayDensityConfiguration { } } }); }); } } /** * Asynchronously applies display density changes to all displays that satisfy the predicate. * * <p>The change will be applied to the user specified by the value of * {@link UserHandle#myUserId()} at the time the method is called. * * @param context The context * @param predicate Determines which displays to set the density to * @param density The density to force */ public static void setForcedDisplayDensity(@NonNull Context context, @NonNull Predicate<DisplayInfo> predicate, final int density) { final int userId = UserHandle.myUserId(); DisplayManager dm = context.getSystemService(DisplayManager.class); AsyncTask.execute(() -> { try { for (Display display : dm.getDisplays( DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED)) { int displayId = display.getDisplayId(); DisplayInfo info = new DisplayInfo(); if (!display.getDisplayInfo(info)) { Log.w(LOG_TAG, "Unable to save forced display density setting " + "for display " + displayId); continue; } if (!predicate.test(info)) { continue; } final IWindowManager wm = WindowManagerGlobal.getWindowManagerService(); wm.setForcedDisplayDensityForUser(displayId, density, userId); } } catch (RemoteException exc) { Log.w(LOG_TAG, "Unable to save forced display density setting"); } }); } } }
packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -89,6 +89,7 @@ import java.io.OutputStream; import java.time.DateTimeException; import java.time.DateTimeException; import java.util.Arrays; import java.util.Arrays; import java.util.Collections; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.HashSet; import java.util.Map; import java.util.Map; import java.util.Objects; import java.util.Objects; Loading @@ -97,7 +98,6 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; import java.util.function.Consumer; import java.util.HashMap; import java.util.zip.CRC32; import java.util.zip.CRC32; /** /** Loading Loading @@ -1753,8 +1753,8 @@ public class SettingsBackupAgent extends BackupAgentHelper { if (previousDensity == null || previousDensity != newDensity) { if (previousDensity == null || previousDensity != newDensity) { // From nothing to something is a change. // From nothing to something is a change. DisplayDensityConfiguration.setForcedDisplayDensity( DisplayDensityConfiguration.setForcedDisplayDensity(getBaseContext(), Display.DEFAULT_DISPLAY, newDensity); info -> info.type == Display.TYPE_INTERNAL, newDensity); } } } } Loading