docs: void initFromCameraParameters(OpenCamera camera) {
      Camera.Parameters parameters = camera.getCamera().getParameters();
      WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
      Display display = manager.getDefaultDisplay();
  
      int displayRotation = display.getRotation();
      int cwRotationFromNaturalToDisplay;
      switch (displayRotation) {
        case Surface.ROTATION_0:
          cwRotationFromNaturalToDisplay = 0;
          break;
        case Surface.ROTATION_90:
          cwRotationFromNaturalToDisplay = 90;
          break;
        case Surface.ROTATION_180:
          cwRotationFromNaturalToDisplay = 180;
          break;
        case Surface.ROTATION_270:
          cwRotationFromNaturalToDisplay = 270;
          break;
        default:
          // Have seen this return incorrect values like -90
          if (displayRotation % 90 == 0) {
            cwRotationFromNaturalToDisplay = (360 + displayRotation) % 360;
          } else {
            throw new IllegalArgumentException("Bad rotation: " + displayRotation);
          }
      }
      Log.i(TAG, "Display at: " + cwRotationFromNaturalToDisplay);
  
      int cwRotationFromNaturalToCamera = camera.getOrientation();
      Log.i(TAG, "Camera at: " + cwRotationFromNaturalToCamera);
  
      // Still not 100% sure about this. But acts like we need to flip this:
      if (camera.getFacing() == CameraFacing.FRONT) {
        cwRotationFromNaturalToCamera = (360 - cwRotationFromNaturalToCamera) % 360;
        Log.i(TAG, "Front camera overriden to: " + cwRotationFromNaturalToCamera);
      }
  
      /*
      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
      String overrideRotationString;
      if (camera.getFacing() == CameraFacing.FRONT) {
        overrideRotationString = prefs.getString(PreferencesActivity.KEY_FORCE_CAMERA_ORIENTATION_FRONT, null);
      } else {
        overrideRotationString = prefs.getString(PreferencesActivity.KEY_FORCE_CAMERA_ORIENTATION, null);
      }
      if (overrideRotationString != null && !"-".equals(overrideRotationString)) {
        Log.i(TAG, "Overriding camera manually to " + overrideRotationString);
        cwRotationFromNaturalToCamera = Integer.parseInt(overrideRotationString);
      }
       */
  
      cwRotationFromDisplayToCamera =
          (360 + cwRotationFromNaturalToCamera - cwRotationFromNaturalToDisplay) % 360;
      Log.i(TAG, "Final display orientation: " + cwRotationFromDisplayToCamera);
      if (camera.getFacing() == CameraFacing.FRONT) {
        Log.i(TAG, "Compensating rotation for front camera");
        cwNeededRotation = (360 - cwRotationFromDisplayToCamera) % 360;
      } else {
        cwNeededRotation = cwRotationFromDisplayToCamera;
      }
      Log.i(TAG, "Clockwise rotation from display to camera: " + cwNeededRotation);
  
      Point theScreenResolution = new Point();
      display.getSize(theScreenResolution);
      screenResolution = theScreenResolution;
      Log.i(TAG, "Screen resolution in current orientation: " + screenResolution);
      cameraResolution = CameraConfigurationUtils.findBestPreviewSizeValue(parameters, screenResolution);
      Log.i(TAG, "Camera resolution: " + cameraResolution);
      bestPreviewSize = CameraConfigurationUtils.findBestPreviewSizeValue(parameters, screenResolution);
      Log.i(TAG, "Best available preview size: " + bestPreviewSize);
  
      boolean isScreenPortrait = screenResolution.x < screenResolution.y;
      boolean isPreviewSizePortrait = bestPreviewSize.x < bestPreviewSize.y;
  
      if (isScreenPortrait == isPreviewSizePortrait) {
        previewSizeOnScreen = bestPreviewSize;
      } else {
        previewSizeOnScreen = new Point(bestPreviewSize.y, bestPreviewSize.x);
      }
      Log.i(TAG, "Preview size on screen: " + previewSizeOnScreen);
    }