diff options
| author | 2024-12-20 12:50:56 +0800 | |
|---|---|---|
| committer | 2024-12-25 20:02:33 +0800 | |
| commit | a76372c02558e03b35dc1d07623e7bfbfc081747 (patch) | |
| tree | 948045a6348bac6aec7e64ca8a6bf898eba1a03a | |
| parent | d3106796a75fbb8ebf7b2e608353a841dc091b58 (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.java | 30 |
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; + } } |