diff options
| -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; + } } |