Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c2b75e86 authored by Mina Karadzic's avatar Mina Karadzic
Browse files

Rename camera compat freeform -> simulate requested orientation.

Force-rotate policy is planned to be phased-out in favor of simulate requested orientation policy - this policy will extend to fullscreen and split-screen modes on large-screen devices.

CAMERA_COMPAT_ modes would be very long with the treatment description, and are only used in simulate requested orientation treatment, so this change is shortening its description, as well as a few other fields.

Please see child CLs where AppCompatCameraSimReqOrientationPolicy is used in different windowing modes.

Flag: EXEMPT renaming
Test: N/A
Bug: 432032916
Change-Id: I4668e0dca2cbd753f1c6f476b195b49d25d5dbdc
parent 1d360925
Loading
Loading
Loading
Loading
+48 −50
Original line number Diff line number Diff line
@@ -42,58 +42,58 @@ public class CameraCompatTaskInfo implements Parcelable {
    /**
     * Undefined camera compat mode.
     */
    public static final int CAMERA_COMPAT_FREEFORM_UNSPECIFIED = 0;
    public static final int CAMERA_COMPAT_UNSPECIFIED = 0;

    /**
     * The value to use when no camera compat treatment should be applied to a windowed task.
     */
    public static final int CAMERA_COMPAT_FREEFORM_NONE = 1;
    public static final int CAMERA_COMPAT_NONE = 1;

    /**
     * The value to use when camera compat treatment should be applied to an activity requesting
     * portrait orientation, while a device is in landscape. Applies only to freeform tasks.
     * portrait orientation, while a device is in landscape.
     */
    public static final int CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_LANDSCAPE = 2;
    public static final int CAMERA_COMPAT_PORTRAIT_DEVICE_IN_LANDSCAPE = 2;

    /**
     * The value to use when camera compat treatment should be applied to an activity requesting
     * landscape orientation, while a device is in landscape. Applies only to freeform tasks.
     * landscape orientation, while a device is in landscape.
     */
    public static final int CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_LANDSCAPE = 3;
    public static final int CAMERA_COMPAT_LANDSCAPE_DEVICE_IN_LANDSCAPE = 3;

    /**
     * The value to use when camera compat treatment should be applied to an activity requesting
     * portrait orientation, while a device is in portrait. Applies only to freeform tasks.
     * portrait orientation, while a device is in portrait.
     */
    public static final int CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_PORTRAIT = 4;
    public static final int CAMERA_COMPAT_PORTRAIT_DEVICE_IN_PORTRAIT = 4;

    /**
     * The value to use when camera compat treatment should be applied to an activity requesting
     * landscape orientation, while a device is in portrait. Applies only to freeform tasks.
     * landscape orientation, while a device is in portrait.
     */
    public static final int CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_PORTRAIT = 5;
    public static final int CAMERA_COMPAT_LANDSCAPE_DEVICE_IN_PORTRAIT = 5;

    @Retention(RetentionPolicy.SOURCE)
    @IntDef(prefix = { "CAMERA_COMPAT_FREEFORM_" }, value = {
            CAMERA_COMPAT_FREEFORM_UNSPECIFIED,
            CAMERA_COMPAT_FREEFORM_NONE,
            CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_LANDSCAPE,
            CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_LANDSCAPE,
            CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_PORTRAIT,
            CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_PORTRAIT,
    @IntDef(prefix = { "CAMERA_COMPAT_" }, value = {
            CAMERA_COMPAT_UNSPECIFIED,
            CAMERA_COMPAT_NONE,
            CAMERA_COMPAT_PORTRAIT_DEVICE_IN_LANDSCAPE,
            CAMERA_COMPAT_LANDSCAPE_DEVICE_IN_LANDSCAPE,
            CAMERA_COMPAT_PORTRAIT_DEVICE_IN_PORTRAIT,
            CAMERA_COMPAT_LANDSCAPE_DEVICE_IN_PORTRAIT,
    })
    public @interface FreeformCameraCompatMode {}
    public @interface CameraCompatMode {}

    /**
     * Whether the camera activity is letterboxed in freeform windowing mode to emulate expected
     * aspect ratio for fixed-orientation apps.
     * Whether the camera activity is letterboxed to emulate expected aspect ratio for
     * fixed-orientation apps.
     *
     * <p>This field is used by the WM and the camera framework, to coordinate camera compat mode
     * setup.
     */
    // TODO(b/414347702): Revisit data structure.
    @FreeformCameraCompatMode
    public int freeformCameraCompatMode = CAMERA_COMPAT_FREEFORM_UNSPECIFIED;
    @CameraCompatMode
    public int cameraCompatMode = CAMERA_COMPAT_UNSPECIFIED;

    /**
     * Real display rotation, never affected by camera compat sandboxing.
@@ -139,7 +139,7 @@ public class CameraCompatTaskInfo implements Parcelable {
     * Reads the CameraCompatTaskInfo from a parcel.
     */
    void readFromParcel(Parcel source) {
        freeformCameraCompatMode = source.readInt();
        cameraCompatMode = source.readInt();
        displayRotation = source.readInt();
    }

@@ -148,7 +148,7 @@ public class CameraCompatTaskInfo implements Parcelable {
     */
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(freeformCameraCompatMode);
        dest.writeInt(cameraCompatMode);
        dest.writeInt(displayRotation);
    }

@@ -160,7 +160,7 @@ public class CameraCompatTaskInfo implements Parcelable {
        if (that == null) {
            return false;
        }
        return freeformCameraCompatMode == that.freeformCameraCompatMode
        return cameraCompatMode == that.cameraCompatMode
                && displayRotation == that.displayRotation;
    }

@@ -171,14 +171,14 @@ public class CameraCompatTaskInfo implements Parcelable {
        if (that == null) {
            return false;
        }
        return freeformCameraCompatMode == that.freeformCameraCompatMode
        return cameraCompatMode == that.cameraCompatMode
                && displayRotation == that.displayRotation;
    }

    @Override
    public String toString() {
        return "CameraCompatTaskInfo { freeformCameraCompatMode="
                + freeformCameraCompatModeToString(freeformCameraCompatMode)
        return "CameraCompatTaskInfo { cameraCompatMode="
                + cameraCompatModeToString(cameraCompatMode)
                + displayRotationToString(displayRotation)
                + "}";
    }
@@ -187,44 +187,43 @@ public class CameraCompatTaskInfo implements Parcelable {
     * Returns the sandboxed display rotation based on the given {@code cameraCompatMode}.
     *
     * <p>This will be what the app likely expects in its requested orientation while running on a
     * device with portrait natural orientation: `CAMERA_COMPAT_FREEFORM_PORTRAIT_*` is 0, and
     * `CAMERA_COMPAT_FREEFORM_LANDSCAPE_*` is 90.
     * device with portrait natural orientation: `CAMERA_COMPAT_PORTRAIT_*` is 0, and
     * `CAMERA_COMPAT_LANDSCAPE_*` is 90.
     *
     * @return {@link WindowConfiguration#ROTATION_UNDEFINED} if not in camera compat mode.
     */
    @Surface.Rotation
    public static int getDisplayRotationFromCameraCompatMode(@FreeformCameraCompatMode int
    public static int getDisplayRotationFromCameraCompatMode(@CameraCompatMode int
            cameraCompatMode) {
        return switch (cameraCompatMode) {
            case CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_LANDSCAPE,
                 CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_PORTRAIT -> ROTATION_0;
            case CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_LANDSCAPE,
                 CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_PORTRAIT -> ROTATION_90;
            case CAMERA_COMPAT_PORTRAIT_DEVICE_IN_LANDSCAPE,
                 CAMERA_COMPAT_PORTRAIT_DEVICE_IN_PORTRAIT -> ROTATION_0;
            case CAMERA_COMPAT_LANDSCAPE_DEVICE_IN_LANDSCAPE,
                 CAMERA_COMPAT_LANDSCAPE_DEVICE_IN_PORTRAIT -> ROTATION_90;
            default -> ROTATION_UNDEFINED;
        };
    }

    /** Human readable version of the freeform camera compat mode. */
    /** Human readable version of the camera compat mode. */
    @NonNull
    public static String freeformCameraCompatModeToString(
            @FreeformCameraCompatMode int freeformCameraCompatMode) {
        return switch (freeformCameraCompatMode) {
            case CAMERA_COMPAT_FREEFORM_UNSPECIFIED -> "undefined";
            case CAMERA_COMPAT_FREEFORM_NONE -> "inactive";
            case CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_LANDSCAPE ->
    public static String cameraCompatModeToString(@CameraCompatMode int cameraCompatMode) {
        return switch (cameraCompatMode) {
            case CAMERA_COMPAT_UNSPECIFIED -> "undefined";
            case CAMERA_COMPAT_NONE -> "inactive";
            case CAMERA_COMPAT_PORTRAIT_DEVICE_IN_LANDSCAPE ->
                    "app-portrait-device-landscape";
            case CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_LANDSCAPE ->
            case CAMERA_COMPAT_LANDSCAPE_DEVICE_IN_LANDSCAPE ->
                    "app-landscape-device-landscape";
            case CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_PORTRAIT ->
            case CAMERA_COMPAT_PORTRAIT_DEVICE_IN_PORTRAIT ->
                    "app-portrait-device-portrait";
            case CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_PORTRAIT ->
            case CAMERA_COMPAT_LANDSCAPE_DEVICE_IN_PORTRAIT ->
                    "app-landscape-device-portrait";
            default -> throw new AssertionError(
                    "Unexpected camera compat mode: " + freeformCameraCompatMode);
            default -> throw new AssertionError("Unexpected camera compat mode: "
                    + cameraCompatMode);
        };
    }

    /** Human readable version of the freeform camera compat mode. */
    /** Human readable version of the camera compat mode. */
    @NonNull
    public static String displayRotationToString(@Surface.Rotation int displayRotation) {
        return switch (displayRotation) {
@@ -233,8 +232,7 @@ public class CameraCompatTaskInfo implements Parcelable {
            case ROTATION_90 -> "90";
            case ROTATION_180 -> "180";
            case ROTATION_270 -> "270";
            default -> throw new AssertionError(
                    "Unexpected display rotation: " + displayRotation);
            default -> throw new AssertionError("Unexpected display rotation: " + displayRotation);
        };
    }
}
+11 −11
Original line number Diff line number Diff line
@@ -1738,13 +1738,13 @@ public final class CameraManager {
                if (activityManager != null) {
                    for (ActivityManager.AppTask appTask : activityManager.getAppTasks()) {
                        final TaskInfo taskInfo = appTask.getTaskInfo();
                        final int freeformCameraCompatMode = taskInfo.appCompatTaskInfo
                                .cameraCompatTaskInfo.freeformCameraCompatMode;
                        if (isInCameraCompatMode(freeformCameraCompatMode)
                        final int cameraCompatMode = taskInfo.appCompatTaskInfo.cameraCompatTaskInfo
                                .cameraCompatMode;
                        if (isInCameraCompatMode(cameraCompatMode)
                                && taskInfo.topActivity != null
                                && taskInfo.topActivity.getPackageName().equals(packageName)) {
                            // WindowManager has requested rotation override.
                            return getRotationOverrideForCompatFreeform(freeformCameraCompatMode,
                            return getRotationOverrideForCompatFreeform(cameraCompatMode,
                                    taskInfo.appCompatTaskInfo.cameraCompatTaskInfo
                                            .displayRotation);
                        }
@@ -1770,10 +1770,10 @@ public final class CameraManager {
                : ICameraService.ROTATION_OVERRIDE_NONE;
    }

    private static boolean isInCameraCompatMode(@CameraCompatTaskInfo.FreeformCameraCompatMode int
            freeformCameraCompatMode) {
        return (freeformCameraCompatMode != CameraCompatTaskInfo.CAMERA_COMPAT_FREEFORM_UNSPECIFIED)
                && (freeformCameraCompatMode != CameraCompatTaskInfo.CAMERA_COMPAT_FREEFORM_NONE);
    private static boolean isInCameraCompatMode(@CameraCompatTaskInfo.CameraCompatMode int
            cameraCompatMode) {
        return (cameraCompatMode != CameraCompatTaskInfo.CAMERA_COMPAT_UNSPECIFIED)
                && (cameraCompatMode != CameraCompatTaskInfo.CAMERA_COMPAT_NONE);
    }

    private static int getRotationOverrideForCompatFreeform(
@@ -1788,13 +1788,13 @@ public final class CameraManager {
    }

    private static int getRotationOverrideForCompatFreeform(
            @CameraCompatTaskInfo.FreeformCameraCompatMode int freeformCameraCompatMode,
            @CameraCompatTaskInfo.CameraCompatMode int freeformCameraCompatMode,
            @Surface.Rotation int displayRotation) {
        // Only rotate-and-crop if the app and device orientations do not match.
        if (freeformCameraCompatMode
                == CameraCompatTaskInfo.CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_PORTRAIT
                == CameraCompatTaskInfo.CAMERA_COMPAT_LANDSCAPE_DEVICE_IN_PORTRAIT
                || freeformCameraCompatMode
                    == CameraCompatTaskInfo.CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_LANDSCAPE) {
                    == CameraCompatTaskInfo.CAMERA_COMPAT_PORTRAIT_DEVICE_IN_LANDSCAPE) {
            // Rotate-and-crop compensates for changes in camera preview calculations (sandboxing).
            // Recommended calculation of camera preview is:
            // rotation = (sensorOrientationDegrees - deviceOrientationDegrees * sign + 360) % 360
+2 −2
Original line number Diff line number Diff line
@@ -188,7 +188,7 @@ class AppCompatCameraOverrides {
     * <li>Activity is opted-in using per-app override, or the treatment is enabled for all apps.
     * </ul>
     */
    boolean shouldApplyFreeformTreatmentForCameraCompat() {
    boolean shouldApplyCameraCompatSimReqOrientationTreatment() {
        return DesktopModeFlags.ENABLE_CAMERA_COMPAT_SIMULATE_REQUESTED_ORIENTATION.isTrue()
                && (shouldEnableCameraCompatSimulateRequestedOrientationTreatmentForApp()
                || shouldForceEnableCameraCompatSimulateRequestedOrientationTreatment());
@@ -254,7 +254,7 @@ class AppCompatCameraOverrides {
        proto.write(SHOULD_REFRESH_ACTIVITY_VIA_PAUSE_FOR_CAMERA_COMPAT,
                shouldRefreshActivityViaPauseForCameraCompat());
        proto.write(SHOULD_ALLOW_SIMULATE_REQUESTED_ORIENTATION_FOR_CAMERA_COMPAT,
                shouldApplyFreeformTreatmentForCameraCompat());
                shouldApplyCameraCompatSimReqOrientationTreatment());
    }

    static class AppCompatCameraOverridesState {
+39 −40
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ class AppCompatCameraPolicy {
    @Nullable
    final DisplayRotationCompatPolicy mDisplayRotationCompatPolicy;
    @Nullable
    final CameraCompatFreeformPolicy mCameraCompatFreeformPolicy;
    final AppCompatCameraSimReqOrientationPolicy mSimReqOrientationPolicy;

    AppCompatCameraPolicy(@NonNull WindowManagerService wmService,
            @NonNull DisplayContent displayContent) {
@@ -54,29 +54,28 @@ class AppCompatCameraPolicy {
        // without the need to restart the device.
        final boolean needsDisplayRotationCompatPolicy = wmService.mAppCompatConfiguration
                .isCameraCompatForceRotateTreatmentEnabledAtBuildTime();
        final boolean needsCameraCompatFreeformPolicy =
        final boolean needsSimReqOrientationPolicy =
                DesktopModeFlags.ENABLE_CAMERA_COMPAT_SIMULATE_REQUESTED_ORIENTATION.isTrue()
                        && DesktopModeHelper.canEnterDesktopMode(wmService.mContext)
                        && wmService.mAppCompatConfiguration
                        .isCameraCompatSimulateRequestedOrientationTreatmentEnabled();
        if (needsDisplayRotationCompatPolicy || needsCameraCompatFreeformPolicy) {
        if (needsDisplayRotationCompatPolicy || needsSimReqOrientationPolicy) {
            final AppCompatCameraStateSource cameraStateListenerDelegate =
                    new AppCompatCameraStateSource();
            mCameraStateMonitor = new CameraStateMonitor(displayContent, wmService.mH,
                    cameraStateListenerDelegate);
            mActivityRefresher = new ActivityRefresher(wmService, wmService.mH);
            mDisplayRotationCompatPolicy =
                    needsDisplayRotationCompatPolicy ? new DisplayRotationCompatPolicy(
                            displayContent, mCameraStateMonitor, cameraStateListenerDelegate,
                            mActivityRefresher)
            mDisplayRotationCompatPolicy = needsDisplayRotationCompatPolicy
                    ? new DisplayRotationCompatPolicy(displayContent, mCameraStateMonitor,
                            cameraStateListenerDelegate, mActivityRefresher)
                    : null;
            mCameraCompatFreeformPolicy =
                    needsCameraCompatFreeformPolicy ? new CameraCompatFreeformPolicy(displayContent,
            mSimReqOrientationPolicy = needsSimReqOrientationPolicy
                    ? new AppCompatCameraSimReqOrientationPolicy(displayContent,
                            mCameraStateMonitor, cameraStateListenerDelegate, mActivityRefresher)
                    : null;
        } else {
            mDisplayRotationCompatPolicy = null;
            mCameraCompatFreeformPolicy = null;
            mSimReqOrientationPolicy = null;
            mCameraStateMonitor = null;
            mActivityRefresher = null;
        }
@@ -150,8 +149,8 @@ class AppCompatCameraPolicy {
        if (mDisplayRotationCompatPolicy != null) {
            mDisplayRotationCompatPolicy.start();
        }
        if (mCameraCompatFreeformPolicy != null) {
            mCameraCompatFreeformPolicy.start();
        if (mSimReqOrientationPolicy != null) {
            mSimReqOrientationPolicy.start();
        }
        if (mCameraStateMonitor != null) {
            mCameraStateMonitor.startListeningToCameraState();
@@ -162,8 +161,8 @@ class AppCompatCameraPolicy {
        if (mDisplayRotationCompatPolicy != null) {
            mDisplayRotationCompatPolicy.dispose();
        }
        if (mCameraCompatFreeformPolicy != null) {
            mCameraCompatFreeformPolicy.dispose();
        if (mSimReqOrientationPolicy != null) {
            mSimReqOrientationPolicy.dispose();
        }
        if (mCameraStateMonitor != null) {
            mCameraStateMonitor.stopListeningToCameraState();
@@ -174,8 +173,8 @@ class AppCompatCameraPolicy {
        return mDisplayRotationCompatPolicy != null;
    }

    boolean hasCameraCompatFreeformPolicy() {
        return mCameraCompatFreeformPolicy != null;
    boolean hasSimReqOrientationPolicy() {
        return mSimReqOrientationPolicy != null;
    }

    boolean hasCameraStateMonitor() {
@@ -198,8 +197,8 @@ class AppCompatCameraPolicy {
        return (cameraPolicy.mDisplayRotationCompatPolicy != null
                        && cameraPolicy.mDisplayRotationCompatPolicy
                                .shouldCameraCompatControlOrientation(activity))
                || (cameraPolicy.mCameraCompatFreeformPolicy != null
                        && cameraPolicy.mCameraCompatFreeformPolicy
                || (cameraPolicy.mSimReqOrientationPolicy != null
                        && cameraPolicy.mSimReqOrientationPolicy
                                .shouldCameraCompatControlOrientation(activity));
    }

@@ -209,8 +208,8 @@ class AppCompatCameraPolicy {
        if (cameraPolicy == null) {
            return false;
        }
        return cameraPolicy.mCameraCompatFreeformPolicy != null
                        && cameraPolicy.mCameraCompatFreeformPolicy
        return cameraPolicy.mSimReqOrientationPolicy != null
                        && cameraPolicy.mSimReqOrientationPolicy
                                .isFreeformLetterboxingForCameraAllowed(activity);
    }

@@ -223,8 +222,8 @@ class AppCompatCameraPolicy {
        return (cameraPolicy.mDisplayRotationCompatPolicy != null
                        && cameraPolicy.mDisplayRotationCompatPolicy
                                .shouldCameraCompatControlAspectRatio(activity))
                || (cameraPolicy.mCameraCompatFreeformPolicy != null
                        && cameraPolicy.mCameraCompatFreeformPolicy
                || (cameraPolicy.mSimReqOrientationPolicy != null
                        && cameraPolicy.mSimReqOrientationPolicy
                                .shouldCameraCompatControlAspectRatio(activity));
    }

@@ -243,8 +242,8 @@ class AppCompatCameraPolicy {
                && cameraPolicy.mDisplayRotationCompatPolicy
                        .isCameraRunningAndWindowingModeEligible(activity,
                                /* mustBeFullscreen */ true))
                || (cameraPolicy.mCameraCompatFreeformPolicy != null
                        && cameraPolicy.mCameraCompatFreeformPolicy
                || (cameraPolicy.mSimReqOrientationPolicy != null
                        && cameraPolicy.mSimReqOrientationPolicy
                                .isCameraRunningAndWindowingModeEligible(activity));
    }

@@ -263,29 +262,29 @@ class AppCompatCameraPolicy {
        }
        float displayRotationCompatPolicyAspectRatio =
                cameraPolicy.mDisplayRotationCompatPolicy != null
                ? cameraPolicy.mDisplayRotationCompatPolicy.getCameraCompatAspectRatio(activity)
                        ? cameraPolicy.mDisplayRotationCompatPolicy.getCameraCompatAspectRatio(
                                activity)
                        : MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
        float cameraCompatFreeformPolicyAspectRatio =
                cameraPolicy.mCameraCompatFreeformPolicy != null
                ? cameraPolicy.mCameraCompatFreeformPolicy.getCameraCompatAspectRatio(activity)
        float simReqOrientationPolicyAspectRatio = cameraPolicy.mSimReqOrientationPolicy != null
                ? cameraPolicy.mSimReqOrientationPolicy.getCameraCompatAspectRatio(activity)
                : MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
        return Math.max(displayRotationCompatPolicyAspectRatio,
                cameraCompatFreeformPolicyAspectRatio);
        return Math.max(displayRotationCompatPolicyAspectRatio, simReqOrientationPolicyAspectRatio);
    }

    @CameraCompatTaskInfo.FreeformCameraCompatMode
    static int getCameraCompatFreeformMode(@NonNull ActivityRecord activity) {
    @CameraCompatTaskInfo.CameraCompatMode
    static int getCameraCompatSimReqOrientationMode(@NonNull ActivityRecord activity) {
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        return cameraPolicy != null && cameraPolicy.mCameraCompatFreeformPolicy != null
                ? cameraPolicy.mCameraCompatFreeformPolicy.getCameraCompatMode(activity)
                : CameraCompatTaskInfo.CAMERA_COMPAT_FREEFORM_NONE;
        return cameraPolicy != null && cameraPolicy.mSimReqOrientationPolicy
                != null
                ? cameraPolicy.mSimReqOrientationPolicy.getCameraCompatMode(activity)
                : CameraCompatTaskInfo.CAMERA_COMPAT_NONE;
    }

    @Surface.Rotation
    static int getCameraDeviceRotation(@NonNull ActivityRecord activity) {
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        return cameraPolicy != null && cameraPolicy.mCameraCompatFreeformPolicy != null
                ? cameraPolicy.mCameraCompatFreeformPolicy.getCameraDeviceRotation()
        return cameraPolicy != null && cameraPolicy.mSimReqOrientationPolicy != null
                ? cameraPolicy.mSimReqOrientationPolicy.getCameraDeviceRotation()
                : ROTATION_UNDEFINED;
    }

+25 −26

File changed and moved.

Preview size limit exceeded, changes collapsed.

Loading