summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Lin <ericth@google.com> 2024-12-20 12:50:56 +0800
committer Eric Lin <ericth@google.com> 2024-12-25 20:02:33 +0800
commita76372c02558e03b35dc1d07623e7bfbfc081747 (patch)
tree948045a6348bac6aec7e64ca8a6bf898eba1a03a
parentd3106796a75fbb8ebf7b2e608353a841dc091b58 (diff)
Add config changes consolidation to SettingsLib.
This commit adds a new API to DisplayDensityConfiguration that allows setting the display density within the context of a batch update. SimpleModeUtils now calls the new method to consolidate configuration updates for display size, font size and navigation mode in ag/30875650. Bug: 356738240 Test: adb shell am start -a com.google.android.settings.matcha.ACCESSIBILITY_APPEARANCE_SETTINGS -c android.intent.category.DEFAULT Test: adb shell am start -n com.android.settings/com.google.android.settings.simplemode.SimpleModeSettingsActivity Flag: com.android.window.flags.condense_configuration_change_for_simple_mode Change-Id: Ia6fd575fc47f73d9c8862b9ddfcb74ca14ce7599
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java
index d91c6bd8e639..58e9355800d7 100644
--- a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java
@@ -29,13 +29,16 @@ import android.view.Display;
import android.view.DisplayInfo;
import android.view.IWindowManager;
import android.view.WindowManagerGlobal;
+import android.window.ConfigurationChangeSetting;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.settingslib.R;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import java.util.function.Predicate;
/**
@@ -340,4 +343,31 @@ public class DisplayDensityUtils {
}
});
}
+
+ /**
+ * Returns a list of {@link ConfigurationChangeSetting} object representing the forced display
+ * density settings for the displays that satisfy the predicate.
+ *
+ * @param index the index of the density value in the available density values array.
+ * @return a list of {@link ConfigurationChangeSetting} objects.
+ * @see IWindowManager#setConfigurationChangeSettingsForUser
+ */
+ @NonNull
+ public List<ConfigurationChangeSetting> getForcedDisplayDensitySetting(final int index) {
+ final ArrayList<ConfigurationChangeSetting> settings = new ArrayList<>();
+ for (final Display display : mDisplayManager.getDisplays(
+ DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED)) {
+ final int displayId = display.getDisplayId();
+ final DisplayInfo info = new DisplayInfo();
+ if (!display.getDisplayInfo(info)) {
+ Log.w(LOG_TAG, "Unable to get display info for display " + displayId);
+ continue;
+ }
+ if (!mPredicate.test(info)) {
+ continue;
+ }
+ settings.add(new ConfigurationChangeSetting.DensitySetting(displayId, mValues[index]));
+ }
+ return settings;
+ }
}