return orientation;
}
+ /** The orientation of the camera image. The value is the angle that the camera
+ * image needs to be rotated clockwise so it shows correctly on the display
+ * in its natural orientation. It should be 0, 90, 180, or 270.*/
+ public int getCameraOrientation() {
+ return mCameraOrientation;
+ }
+
public void saveHighResMosaic() {
runBackgroundThread(new Thread() {
@Override
}
public void flipPreviewIfNeeded() {
- if (CameraUtil.getDisplayRotation(mActivity) >= 180) {
- // In either reverse landscape or reverse portrait
+ // Rotation needed to display image correctly clockwise
+ int cameraOrientation = mController.getCameraOrientation();
+ // Display rotated counter-clockwise
+ int displayRotation = CameraUtil.getDisplayRotation(mActivity);
+ // Rotation needed to display image correctly on current display
+ int rotation = (cameraOrientation - displayRotation + 360) % 360;
+ if (rotation >= 180) {
mTextureView.setRotation(180);
} else {
mTextureView.setRotation(0);