summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/res/res/values/config.xml12
-rw-r--r--core/res/res/values/symbols.xml2
-rw-r--r--services/core/java/com/android/server/display/LogicalDisplayMapper.java15
-rw-r--r--services/core/java/com/android/server/policy/DisplayFoldController.java15
4 files changed, 32 insertions, 12 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index a928408f68ed..34a148c07e37 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -660,9 +660,15 @@
The default is false. -->
<bool name="config_lidControlsSleep">false</bool>
- <!-- The device state (supplied by DeviceStateManager) that should be treated as folded by the
- display fold controller. Default is DeviceStateManager.INVALID_DEVICE_STATE. -->
- <integer name="config_foldedDeviceState">-1</integer>
+ <!-- The device states (supplied by DeviceStateManager) that should be treated as folded by the
+ display fold controller. Default is empty. -->
+ <integer-array name="config_foldedDeviceStates">
+ <!-- Example:
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ -->
+ </integer-array>
<!-- Indicate the display area rect for foldable devices in folded state. -->
<string name="config_foldedArea"></string>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index bcef68072079..dfef3ebc8323 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -3728,7 +3728,7 @@
<java-symbol type="string" name="config_customCountryDetector" />
<!-- For Foldables -->
- <java-symbol type="integer" name="config_foldedDeviceState" />
+ <java-symbol type="array" name="config_foldedDeviceStates" />
<java-symbol type="string" name="config_foldedArea" />
<java-symbol type="array" name="config_disableApksUnlessMatchedSku_apk_list" />
diff --git a/services/core/java/com/android/server/display/LogicalDisplayMapper.java b/services/core/java/com/android/server/display/LogicalDisplayMapper.java
index e7388787ecf9..282d595e0d6c 100644
--- a/services/core/java/com/android/server/display/LogicalDisplayMapper.java
+++ b/services/core/java/com/android/server/display/LogicalDisplayMapper.java
@@ -103,7 +103,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {
private final DisplayDeviceRepository mDisplayDeviceRepo;
private final Listener mListener;
- private final int mFoldedDeviceState;
+ private final int[] mFoldedDeviceStates;
LogicalDisplayMapper(Context context, DisplayDeviceRepository repo, Listener listener) {
mDisplayDeviceRepo = repo;
@@ -111,8 +111,8 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {
mSingleDisplayDemoMode = SystemProperties.getBoolean("persist.demo.singledisplay", false);
mDisplayDeviceRepo.addListener(this);
- mFoldedDeviceState = context.getResources().getInteger(
- com.android.internal.R.integer.config_foldedDeviceState);
+ mFoldedDeviceStates = context.getResources().getIntArray(
+ com.android.internal.R.array.config_foldedDeviceStates);
loadFoldedDisplayConfig(context);
}
@@ -216,7 +216,14 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {
}
void setDeviceStateLocked(int state) {
- setDeviceFoldedLocked(state == mFoldedDeviceState);
+ boolean folded = false;
+ for (int i = 0; i < mFoldedDeviceStates.length; i++) {
+ if (state == mFoldedDeviceStates[i]) {
+ folded = true;
+ break;
+ }
+ }
+ setDeviceFoldedLocked(folded);
}
void setDeviceFoldedLocked(boolean isFolded) {
diff --git a/services/core/java/com/android/server/policy/DisplayFoldController.java b/services/core/java/com/android/server/policy/DisplayFoldController.java
index ff51237a900a..c10e828d8c3d 100644
--- a/services/core/java/com/android/server/policy/DisplayFoldController.java
+++ b/services/core/java/com/android/server/policy/DisplayFoldController.java
@@ -209,16 +209,23 @@ class DisplayFoldController {
* resource.
*/
private class DeviceStateListener implements DeviceStateManager.DeviceStateListener {
- private final int mFoldedDeviceState;
+ private final int[] mFoldedDeviceStates;
DeviceStateListener(Context context) {
- mFoldedDeviceState = context.getResources().getInteger(
- com.android.internal.R.integer.config_foldedDeviceState);
+ mFoldedDeviceStates = context.getResources().getIntArray(
+ com.android.internal.R.array.config_foldedDeviceStates);
}
@Override
public void onDeviceStateChanged(int deviceState) {
- setDeviceFolded(deviceState == mFoldedDeviceState);
+ boolean folded = false;
+ for (int i = 0; i < mFoldedDeviceStates.length; i++) {
+ if (deviceState == mFoldedDeviceStates[i]) {
+ folded = true;
+ break;
+ }
+ }
+ setDeviceFolded(folded);
}
}
}