diff --git a/packages/SettingsLib/Android.bp b/packages/SettingsLib/Android.bp
index fea1831b4c5f8..9c8345dafbc8e 100644
--- a/packages/SettingsLib/Android.bp
+++ b/packages/SettingsLib/Android.bp
@@ -25,6 +25,7 @@ android_library {
"SettingsLibAdaptiveIcon",
"SettingsLibRadioButtonPreference",
"WifiTrackerLib",
+ "SettingsLibDisplayDensityUtils",
],
// ANDROIDMK TRANSLATION ERROR: unsupported assignment to LOCAL_SHARED_JAVA_LIBRARIES
diff --git a/packages/SettingsLib/DisplayDensityUtils/Android.bp b/packages/SettingsLib/DisplayDensityUtils/Android.bp
new file mode 100644
index 0000000000000..27d0cb5ad48c5
--- /dev/null
+++ b/packages/SettingsLib/DisplayDensityUtils/Android.bp
@@ -0,0 +1,7 @@
+android_library {
+ name: "SettingsLibDisplayDensityUtils",
+
+ srcs: ["src/**/*.java"],
+
+ min_sdk_version: "21",
+}
diff --git a/packages/SettingsLib/DisplayDensityUtils/AndroidManifest.xml b/packages/SettingsLib/DisplayDensityUtils/AndroidManifest.xml
new file mode 100644
index 0000000000000..0a4e2bb34409a
--- /dev/null
+++ b/packages/SettingsLib/DisplayDensityUtils/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
The change will be applied to the user specified by the value of {@link + * UserHandle#myUserId()} at the time the method is called. + * + * @param displayId the identifier of the display to modify + */ + public static void clearForcedDisplayDensity(final int displayId) { + final int userId = UserHandle.myUserId(); + AsyncTask.execute( + () -> { + try { + final IWindowManager wm = WindowManagerGlobal.getWindowManagerService(); + wm.clearForcedDisplayDensityForUser(displayId, userId); + } catch (RemoteException exc) { + Log.w(LOG_TAG, "Unable to clear forced display density setting"); + } + }); + } + + /** + * Asynchronously applies display density changes to the specified display. + * + *
The change will be applied to the user specified by the value of {@link + * UserHandle#myUserId()} at the time the method is called. + * + * @param displayId the identifier of the display to modify + * @param density the density to force for the specified display + */ + public static void setForcedDisplayDensity(final int displayId, final int density) { + final int userId = UserHandle.myUserId(); + AsyncTask.execute( + () -> { + try { + final IWindowManager wm = WindowManagerGlobal.getWindowManagerService(); + wm.setForcedDisplayDensityForUser(displayId, density, userId); + } catch (RemoteException exc) { + Log.w(LOG_TAG, "Unable to save forced display density setting"); + } + }); + } +} diff --git a/packages/SettingsProvider/Android.bp b/packages/SettingsProvider/Android.bp index e54b847f167d6..0144dd47b99bf 100644 --- a/packages/SettingsProvider/Android.bp +++ b/packages/SettingsProvider/Android.bp @@ -11,7 +11,7 @@ android_app { ], static_libs: [ "junit", - "SettingsLib", + "SettingsLibDisplayDensityUtils", ], platform_apis: true, certificate: "platform", @@ -30,7 +30,7 @@ android_test { ], static_libs: [ "androidx.test.rules", - "SettingsLib", + "SettingsLibDisplayDensityUtils", ], libs: [ "android.test.base", diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java index 36e945fe30b65..50528a1f96e38 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java @@ -45,7 +45,7 @@ import android.view.Display; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import com.android.internal.widget.LockPatternUtils; -import com.android.settingslib.display.DisplayDensityUtils; +import com.android.settingslib.display.DisplayDensityConfiguration; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; @@ -1035,7 +1035,8 @@ public class SettingsBackupAgent extends BackupAgentHelper { if (previousDensity == null || previousDensity != newDensity) { // From nothing to something is a change. - DisplayDensityUtils.setForcedDisplayDensity(Display.DEFAULT_DISPLAY, newDensity); + DisplayDensityConfiguration.setForcedDisplayDensity( + Display.DEFAULT_DISPLAY, newDensity); } }