Loading core/java/android/app/AppCompatTaskInfo.java +28 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.app; import static android.app.TaskInfo.PROPERTY_VALUE_UNSET; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Parcel; Loading Loading @@ -76,25 +78,37 @@ public class AppCompatTaskInfo implements Parcelable { * If {@link #isLetterboxDoubleTapEnabled} it contains the current letterbox vertical position * or {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxVerticalPosition; public int topActivityLetterboxVerticalPosition = PROPERTY_VALUE_UNSET; /** * If {@link #isLetterboxDoubleTapEnabled} it contains the current letterbox vertical position * or {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxHorizontalPosition; public int topActivityLetterboxHorizontalPosition = PROPERTY_VALUE_UNSET; /** * If {@link #isLetterboxDoubleTapEnabled} it contains the current width of the letterboxed * activity or {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxWidth; public int topActivityLetterboxWidth = PROPERTY_VALUE_UNSET; /** * If {@link #isLetterboxDoubleTapEnabled} it contains the current height of the letterboxed * activity or {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxHeight; public int topActivityLetterboxHeight = PROPERTY_VALUE_UNSET; /** * Contains the current app height of the letterboxed activity if available or * {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxAppHeight = PROPERTY_VALUE_UNSET; /** * Contains the current app width of the letterboxed activity if available or * {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxAppWidth = PROPERTY_VALUE_UNSET; /** * Stores camera-related app compat information about a particular Task. Loading Loading @@ -162,6 +176,8 @@ public class AppCompatTaskInfo implements Parcelable { && topActivityLetterboxVerticalPosition == that.topActivityLetterboxVerticalPosition && topActivityLetterboxWidth == that.topActivityLetterboxWidth && topActivityLetterboxHeight == that.topActivityLetterboxHeight && topActivityLetterboxAppWidth == that.topActivityLetterboxAppWidth && topActivityLetterboxAppHeight == that.topActivityLetterboxAppHeight && topActivityLetterboxHorizontalPosition == that.topActivityLetterboxHorizontalPosition && isUserFullscreenOverrideEnabled == that.isUserFullscreenOverrideEnabled Loading @@ -188,6 +204,8 @@ public class AppCompatTaskInfo implements Parcelable { == that.topActivityLetterboxHorizontalPosition && topActivityLetterboxWidth == that.topActivityLetterboxWidth && topActivityLetterboxHeight == that.topActivityLetterboxHeight && topActivityLetterboxAppWidth == that.topActivityLetterboxAppWidth && topActivityLetterboxAppHeight == that.topActivityLetterboxAppHeight && isUserFullscreenOverrideEnabled == that.isUserFullscreenOverrideEnabled && isSystemFullscreenOverrideEnabled == that.isSystemFullscreenOverrideEnabled && cameraCompatTaskInfo.equalsForCompatUi(that.cameraCompatTaskInfo); Loading @@ -208,6 +226,8 @@ public class AppCompatTaskInfo implements Parcelable { topActivityLetterboxHorizontalPosition = source.readInt(); topActivityLetterboxWidth = source.readInt(); topActivityLetterboxHeight = source.readInt(); topActivityLetterboxAppWidth = source.readInt(); topActivityLetterboxAppHeight = source.readInt(); isUserFullscreenOverrideEnabled = source.readBoolean(); isSystemFullscreenOverrideEnabled = source.readBoolean(); cameraCompatTaskInfo = source.readTypedObject(CameraCompatTaskInfo.CREATOR); Loading @@ -229,6 +249,8 @@ public class AppCompatTaskInfo implements Parcelable { dest.writeInt(topActivityLetterboxHorizontalPosition); dest.writeInt(topActivityLetterboxWidth); dest.writeInt(topActivityLetterboxHeight); dest.writeInt(topActivityLetterboxAppWidth); dest.writeInt(topActivityLetterboxAppHeight); dest.writeBoolean(isUserFullscreenOverrideEnabled); dest.writeBoolean(isSystemFullscreenOverrideEnabled); dest.writeTypedObject(cameraCompatTaskInfo, flags); Loading @@ -250,6 +272,8 @@ public class AppCompatTaskInfo implements Parcelable { + topActivityLetterboxHorizontalPosition + " topActivityLetterboxWidth=" + topActivityLetterboxWidth + " topActivityLetterboxHeight=" + topActivityLetterboxHeight + " topActivityLetterboxAppWidth=" + topActivityLetterboxAppWidth + " topActivityLetterboxAppHeight=" + topActivityLetterboxAppHeight + " isUserFullscreenOverrideEnabled=" + isUserFullscreenOverrideEnabled + " isSystemFullscreenOverrideEnabled=" + isSystemFullscreenOverrideEnabled + " cameraCompatTaskInfo=" + cameraCompatTaskInfo.toString() Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUtils.kt +5 −4 Original line number Diff line number Diff line Loading @@ -63,7 +63,8 @@ fun calculateInitialBounds( if (taskInfo.isResizeable) { if (isFixedOrientationPortrait(topActivityInfo.screenOrientation)) { // Respect apps fullscreen width Size(taskInfo.appCompatTaskInfo.topActivityLetterboxWidth, idealSize.height) Size(taskInfo.appCompatTaskInfo.topActivityLetterboxAppWidth, idealSize.height) } else { idealSize } Loading @@ -79,7 +80,7 @@ fun calculateInitialBounds( // Respect apps fullscreen height and apply custom app width Size( customPortraitWidthForLandscapeApp, taskInfo.appCompatTaskInfo.topActivityLetterboxHeight taskInfo.appCompatTaskInfo.topActivityLetterboxAppHeight ) } else { idealSize Loading Loading @@ -143,9 +144,9 @@ fun maximizeSizeGivenAspectRatio( /** Calculates the aspect ratio of an activity from its fullscreen bounds. */ fun calculateAspectRatio(taskInfo: RunningTaskInfo): Float { val appLetterboxWidth = taskInfo.appCompatTaskInfo.topActivityLetterboxAppWidth val appLetterboxHeight = taskInfo.appCompatTaskInfo.topActivityLetterboxAppHeight if (taskInfo.appCompatTaskInfo.topActivityBoundsLetterboxed) { val appLetterboxWidth = taskInfo.appCompatTaskInfo.topActivityLetterboxWidth val appLetterboxHeight = taskInfo.appCompatTaskInfo.topActivityLetterboxHeight return maxOf(appLetterboxWidth, appLetterboxHeight) / minOf(appLetterboxWidth, appLetterboxHeight).toFloat() } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +4 −4 Original line number Diff line number Diff line Loading @@ -2694,14 +2694,14 @@ class DesktopTasksControllerTest : ShellTestCase() { screenOrientation == SCREEN_ORIENTATION_PORTRAIT) { // Letterbox to portrait size appCompatTaskInfo.topActivityBoundsLetterboxed = true appCompatTaskInfo.topActivityLetterboxWidth = 1200 appCompatTaskInfo.topActivityLetterboxHeight = 1600 appCompatTaskInfo.topActivityLetterboxAppWidth = 1200 appCompatTaskInfo.topActivityLetterboxAppHeight = 1600 } else if (deviceOrientation == ORIENTATION_PORTRAIT && screenOrientation == SCREEN_ORIENTATION_LANDSCAPE) { // Letterbox to landscape size appCompatTaskInfo.topActivityBoundsLetterboxed = true appCompatTaskInfo.topActivityLetterboxWidth = 1600 appCompatTaskInfo.topActivityLetterboxHeight = 1200 appCompatTaskInfo.topActivityLetterboxAppWidth = 1600 appCompatTaskInfo.topActivityLetterboxAppHeight = 1200 } } else { appCompatTaskInfo.topActivityBoundsLetterboxed = false Loading services/core/java/com/android/server/wm/AppCompatUtils.java +30 −6 Original line number Diff line number Diff line Loading @@ -89,13 +89,32 @@ class AppCompatUtils { return activityRecord.info.isChangeEnabled(overrideChangeId); } /** * Attempts to return the app bounds (bounds without insets) of the top most opaque activity. If * these are not available, it defaults to the bounds of the activity which include insets. In * the event the activity is in Size Compat Mode, the Size Compat bounds are returned instead. */ @NonNull static Rect getAppBounds(@NonNull ActivityRecord activityRecord) { // TODO(b/268458693): Refactor configuration inheritance in case of translucent activities final Rect appBounds = activityRecord.getConfiguration().windowConfiguration.getAppBounds(); if (appBounds == null) { return activityRecord.getBounds(); } return activityRecord.mAppCompatController.getTransparentPolicy() .findOpaqueNotFinishingActivityBelow() .map(AppCompatUtils::getAppBounds) .orElseGet(() -> { if (activityRecord.hasSizeCompatBounds()) { return activityRecord.getScreenResolvedBounds(); } return appBounds; }); } static void fillAppCompatTaskInfo(@NonNull Task task, @NonNull TaskInfo info, @Nullable ActivityRecord top) { final AppCompatTaskInfo appCompatTaskInfo = info.appCompatTaskInfo; appCompatTaskInfo.topActivityLetterboxVerticalPosition = TaskInfo.PROPERTY_VALUE_UNSET; appCompatTaskInfo.topActivityLetterboxHorizontalPosition = TaskInfo.PROPERTY_VALUE_UNSET; appCompatTaskInfo.topActivityLetterboxWidth = TaskInfo.PROPERTY_VALUE_UNSET; appCompatTaskInfo.topActivityLetterboxHeight = TaskInfo.PROPERTY_VALUE_UNSET; appCompatTaskInfo.cameraCompatTaskInfo.freeformCameraCompatMode = CameraCompatTaskInfo.CAMERA_COMPAT_FREEFORM_NONE; if (top == null) { Loading Loading @@ -124,8 +143,13 @@ class AppCompatUtils { .getAppCompatAspectRatioOverrides().isSystemOverrideToFullscreenEnabled(); appCompatTaskInfo.isFromLetterboxDoubleTap = reachabilityOverrides.isFromDoubleTap(); appCompatTaskInfo.topActivityLetterboxWidth = top.getBounds().width(); appCompatTaskInfo.topActivityLetterboxHeight = top.getBounds().height(); final Rect bounds = top.getBounds(); final Rect appBounds = getAppBounds(top); appCompatTaskInfo.topActivityLetterboxWidth = bounds.width(); appCompatTaskInfo.topActivityLetterboxHeight = bounds.height(); appCompatTaskInfo.topActivityLetterboxAppWidth = appBounds.width(); appCompatTaskInfo.topActivityLetterboxAppHeight = appBounds.height(); // We need to consider if letterboxed or pillarboxed. // TODO(b/336807329) Encapsulate reachability logic appCompatTaskInfo.isLetterboxDoubleTapEnabled = reachabilityOverrides Loading services/core/java/com/android/server/wm/DesktopModeBoundsCalculator.java +6 −5 Original line number Diff line number Diff line Loading @@ -234,12 +234,13 @@ public final class DesktopModeBoundsCalculator { float desiredAspectRatio = 0; if (taskInfo.isRunning) { final AppCompatTaskInfo appCompatTaskInfo = taskInfo.appCompatTaskInfo; final int appLetterboxWidth = taskInfo.appCompatTaskInfo.topActivityLetterboxAppWidth; final int appLetterboxHeight = taskInfo.appCompatTaskInfo.topActivityLetterboxAppHeight; if (appCompatTaskInfo.topActivityBoundsLetterboxed) { desiredAspectRatio = (float) Math.max( appCompatTaskInfo.topActivityLetterboxWidth, appCompatTaskInfo.topActivityLetterboxHeight) / Math.min(appCompatTaskInfo.topActivityLetterboxWidth, appCompatTaskInfo.topActivityLetterboxHeight); desiredAspectRatio = (float) Math.max(appLetterboxWidth, appLetterboxHeight) / Math.min(appLetterboxWidth, appLetterboxHeight); } else { desiredAspectRatio = Math.max(fullscreenHeight, fullscreenWidth) / Math.min(fullscreenHeight, fullscreenWidth); Loading Loading
core/java/android/app/AppCompatTaskInfo.java +28 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.app; import static android.app.TaskInfo.PROPERTY_VALUE_UNSET; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Parcel; Loading Loading @@ -76,25 +78,37 @@ public class AppCompatTaskInfo implements Parcelable { * If {@link #isLetterboxDoubleTapEnabled} it contains the current letterbox vertical position * or {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxVerticalPosition; public int topActivityLetterboxVerticalPosition = PROPERTY_VALUE_UNSET; /** * If {@link #isLetterboxDoubleTapEnabled} it contains the current letterbox vertical position * or {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxHorizontalPosition; public int topActivityLetterboxHorizontalPosition = PROPERTY_VALUE_UNSET; /** * If {@link #isLetterboxDoubleTapEnabled} it contains the current width of the letterboxed * activity or {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxWidth; public int topActivityLetterboxWidth = PROPERTY_VALUE_UNSET; /** * If {@link #isLetterboxDoubleTapEnabled} it contains the current height of the letterboxed * activity or {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxHeight; public int topActivityLetterboxHeight = PROPERTY_VALUE_UNSET; /** * Contains the current app height of the letterboxed activity if available or * {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxAppHeight = PROPERTY_VALUE_UNSET; /** * Contains the current app width of the letterboxed activity if available or * {@link TaskInfo#PROPERTY_VALUE_UNSET} otherwise. */ public int topActivityLetterboxAppWidth = PROPERTY_VALUE_UNSET; /** * Stores camera-related app compat information about a particular Task. Loading Loading @@ -162,6 +176,8 @@ public class AppCompatTaskInfo implements Parcelable { && topActivityLetterboxVerticalPosition == that.topActivityLetterboxVerticalPosition && topActivityLetterboxWidth == that.topActivityLetterboxWidth && topActivityLetterboxHeight == that.topActivityLetterboxHeight && topActivityLetterboxAppWidth == that.topActivityLetterboxAppWidth && topActivityLetterboxAppHeight == that.topActivityLetterboxAppHeight && topActivityLetterboxHorizontalPosition == that.topActivityLetterboxHorizontalPosition && isUserFullscreenOverrideEnabled == that.isUserFullscreenOverrideEnabled Loading @@ -188,6 +204,8 @@ public class AppCompatTaskInfo implements Parcelable { == that.topActivityLetterboxHorizontalPosition && topActivityLetterboxWidth == that.topActivityLetterboxWidth && topActivityLetterboxHeight == that.topActivityLetterboxHeight && topActivityLetterboxAppWidth == that.topActivityLetterboxAppWidth && topActivityLetterboxAppHeight == that.topActivityLetterboxAppHeight && isUserFullscreenOverrideEnabled == that.isUserFullscreenOverrideEnabled && isSystemFullscreenOverrideEnabled == that.isSystemFullscreenOverrideEnabled && cameraCompatTaskInfo.equalsForCompatUi(that.cameraCompatTaskInfo); Loading @@ -208,6 +226,8 @@ public class AppCompatTaskInfo implements Parcelable { topActivityLetterboxHorizontalPosition = source.readInt(); topActivityLetterboxWidth = source.readInt(); topActivityLetterboxHeight = source.readInt(); topActivityLetterboxAppWidth = source.readInt(); topActivityLetterboxAppHeight = source.readInt(); isUserFullscreenOverrideEnabled = source.readBoolean(); isSystemFullscreenOverrideEnabled = source.readBoolean(); cameraCompatTaskInfo = source.readTypedObject(CameraCompatTaskInfo.CREATOR); Loading @@ -229,6 +249,8 @@ public class AppCompatTaskInfo implements Parcelable { dest.writeInt(topActivityLetterboxHorizontalPosition); dest.writeInt(topActivityLetterboxWidth); dest.writeInt(topActivityLetterboxHeight); dest.writeInt(topActivityLetterboxAppWidth); dest.writeInt(topActivityLetterboxAppHeight); dest.writeBoolean(isUserFullscreenOverrideEnabled); dest.writeBoolean(isSystemFullscreenOverrideEnabled); dest.writeTypedObject(cameraCompatTaskInfo, flags); Loading @@ -250,6 +272,8 @@ public class AppCompatTaskInfo implements Parcelable { + topActivityLetterboxHorizontalPosition + " topActivityLetterboxWidth=" + topActivityLetterboxWidth + " topActivityLetterboxHeight=" + topActivityLetterboxHeight + " topActivityLetterboxAppWidth=" + topActivityLetterboxAppWidth + " topActivityLetterboxAppHeight=" + topActivityLetterboxAppHeight + " isUserFullscreenOverrideEnabled=" + isUserFullscreenOverrideEnabled + " isSystemFullscreenOverrideEnabled=" + isSystemFullscreenOverrideEnabled + " cameraCompatTaskInfo=" + cameraCompatTaskInfo.toString() Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUtils.kt +5 −4 Original line number Diff line number Diff line Loading @@ -63,7 +63,8 @@ fun calculateInitialBounds( if (taskInfo.isResizeable) { if (isFixedOrientationPortrait(topActivityInfo.screenOrientation)) { // Respect apps fullscreen width Size(taskInfo.appCompatTaskInfo.topActivityLetterboxWidth, idealSize.height) Size(taskInfo.appCompatTaskInfo.topActivityLetterboxAppWidth, idealSize.height) } else { idealSize } Loading @@ -79,7 +80,7 @@ fun calculateInitialBounds( // Respect apps fullscreen height and apply custom app width Size( customPortraitWidthForLandscapeApp, taskInfo.appCompatTaskInfo.topActivityLetterboxHeight taskInfo.appCompatTaskInfo.topActivityLetterboxAppHeight ) } else { idealSize Loading Loading @@ -143,9 +144,9 @@ fun maximizeSizeGivenAspectRatio( /** Calculates the aspect ratio of an activity from its fullscreen bounds. */ fun calculateAspectRatio(taskInfo: RunningTaskInfo): Float { val appLetterboxWidth = taskInfo.appCompatTaskInfo.topActivityLetterboxAppWidth val appLetterboxHeight = taskInfo.appCompatTaskInfo.topActivityLetterboxAppHeight if (taskInfo.appCompatTaskInfo.topActivityBoundsLetterboxed) { val appLetterboxWidth = taskInfo.appCompatTaskInfo.topActivityLetterboxWidth val appLetterboxHeight = taskInfo.appCompatTaskInfo.topActivityLetterboxHeight return maxOf(appLetterboxWidth, appLetterboxHeight) / minOf(appLetterboxWidth, appLetterboxHeight).toFloat() } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +4 −4 Original line number Diff line number Diff line Loading @@ -2694,14 +2694,14 @@ class DesktopTasksControllerTest : ShellTestCase() { screenOrientation == SCREEN_ORIENTATION_PORTRAIT) { // Letterbox to portrait size appCompatTaskInfo.topActivityBoundsLetterboxed = true appCompatTaskInfo.topActivityLetterboxWidth = 1200 appCompatTaskInfo.topActivityLetterboxHeight = 1600 appCompatTaskInfo.topActivityLetterboxAppWidth = 1200 appCompatTaskInfo.topActivityLetterboxAppHeight = 1600 } else if (deviceOrientation == ORIENTATION_PORTRAIT && screenOrientation == SCREEN_ORIENTATION_LANDSCAPE) { // Letterbox to landscape size appCompatTaskInfo.topActivityBoundsLetterboxed = true appCompatTaskInfo.topActivityLetterboxWidth = 1600 appCompatTaskInfo.topActivityLetterboxHeight = 1200 appCompatTaskInfo.topActivityLetterboxAppWidth = 1600 appCompatTaskInfo.topActivityLetterboxAppHeight = 1200 } } else { appCompatTaskInfo.topActivityBoundsLetterboxed = false Loading
services/core/java/com/android/server/wm/AppCompatUtils.java +30 −6 Original line number Diff line number Diff line Loading @@ -89,13 +89,32 @@ class AppCompatUtils { return activityRecord.info.isChangeEnabled(overrideChangeId); } /** * Attempts to return the app bounds (bounds without insets) of the top most opaque activity. If * these are not available, it defaults to the bounds of the activity which include insets. In * the event the activity is in Size Compat Mode, the Size Compat bounds are returned instead. */ @NonNull static Rect getAppBounds(@NonNull ActivityRecord activityRecord) { // TODO(b/268458693): Refactor configuration inheritance in case of translucent activities final Rect appBounds = activityRecord.getConfiguration().windowConfiguration.getAppBounds(); if (appBounds == null) { return activityRecord.getBounds(); } return activityRecord.mAppCompatController.getTransparentPolicy() .findOpaqueNotFinishingActivityBelow() .map(AppCompatUtils::getAppBounds) .orElseGet(() -> { if (activityRecord.hasSizeCompatBounds()) { return activityRecord.getScreenResolvedBounds(); } return appBounds; }); } static void fillAppCompatTaskInfo(@NonNull Task task, @NonNull TaskInfo info, @Nullable ActivityRecord top) { final AppCompatTaskInfo appCompatTaskInfo = info.appCompatTaskInfo; appCompatTaskInfo.topActivityLetterboxVerticalPosition = TaskInfo.PROPERTY_VALUE_UNSET; appCompatTaskInfo.topActivityLetterboxHorizontalPosition = TaskInfo.PROPERTY_VALUE_UNSET; appCompatTaskInfo.topActivityLetterboxWidth = TaskInfo.PROPERTY_VALUE_UNSET; appCompatTaskInfo.topActivityLetterboxHeight = TaskInfo.PROPERTY_VALUE_UNSET; appCompatTaskInfo.cameraCompatTaskInfo.freeformCameraCompatMode = CameraCompatTaskInfo.CAMERA_COMPAT_FREEFORM_NONE; if (top == null) { Loading Loading @@ -124,8 +143,13 @@ class AppCompatUtils { .getAppCompatAspectRatioOverrides().isSystemOverrideToFullscreenEnabled(); appCompatTaskInfo.isFromLetterboxDoubleTap = reachabilityOverrides.isFromDoubleTap(); appCompatTaskInfo.topActivityLetterboxWidth = top.getBounds().width(); appCompatTaskInfo.topActivityLetterboxHeight = top.getBounds().height(); final Rect bounds = top.getBounds(); final Rect appBounds = getAppBounds(top); appCompatTaskInfo.topActivityLetterboxWidth = bounds.width(); appCompatTaskInfo.topActivityLetterboxHeight = bounds.height(); appCompatTaskInfo.topActivityLetterboxAppWidth = appBounds.width(); appCompatTaskInfo.topActivityLetterboxAppHeight = appBounds.height(); // We need to consider if letterboxed or pillarboxed. // TODO(b/336807329) Encapsulate reachability logic appCompatTaskInfo.isLetterboxDoubleTapEnabled = reachabilityOverrides Loading
services/core/java/com/android/server/wm/DesktopModeBoundsCalculator.java +6 −5 Original line number Diff line number Diff line Loading @@ -234,12 +234,13 @@ public final class DesktopModeBoundsCalculator { float desiredAspectRatio = 0; if (taskInfo.isRunning) { final AppCompatTaskInfo appCompatTaskInfo = taskInfo.appCompatTaskInfo; final int appLetterboxWidth = taskInfo.appCompatTaskInfo.topActivityLetterboxAppWidth; final int appLetterboxHeight = taskInfo.appCompatTaskInfo.topActivityLetterboxAppHeight; if (appCompatTaskInfo.topActivityBoundsLetterboxed) { desiredAspectRatio = (float) Math.max( appCompatTaskInfo.topActivityLetterboxWidth, appCompatTaskInfo.topActivityLetterboxHeight) / Math.min(appCompatTaskInfo.topActivityLetterboxWidth, appCompatTaskInfo.topActivityLetterboxHeight); desiredAspectRatio = (float) Math.max(appLetterboxWidth, appLetterboxHeight) / Math.min(appLetterboxWidth, appLetterboxHeight); } else { desiredAspectRatio = Math.max(fullscreenHeight, fullscreenWidth) / Math.min(fullscreenHeight, fullscreenWidth); Loading