diff options
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 7 | ||||
-rw-r--r-- | src/com/android/camera/PhotoUI.java | 3 | ||||
-rw-r--r-- | src/com/android/camera/ui/RotatableLayout.java | 25 | ||||
-rw-r--r-- | src/com/android/camera/util/CameraUtil.java | 23 |
4 files changed, 34 insertions, 24 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index bed8a2149..6256bfbf3 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -101,6 +101,7 @@ public class PhotoModule private static final int CAMERA_OPEN_DONE = 8; private static final int OPEN_CAMERA_FAIL = 9; private static final int CAMERA_DISABLED = 10; + private static final int SWITCH_TO_GCAM_MODULE = 11; // The subset of parameters we need to update in setCameraParameters(). private static final int UPDATE_PARAM_INITIALIZE = 1; @@ -340,6 +341,10 @@ public class PhotoModule R.string.camera_disabled); break; } + + case SWITCH_TO_GCAM_MODULE: { + mActivity.onModuleSelected(ModuleSwitcher.GCAM_MODULE_INDEX); + } } } } @@ -1740,7 +1745,7 @@ public class PhotoModule // Switch to gcam module if HDR+ was selected if (doModeSwitch && !mIsImageCaptureIntent) { - mActivity.onModuleSelected(ModuleSwitcher.GCAM_MODULE_INDEX); + mHandler.sendEmptyMessage(SWITCH_TO_GCAM_MODULE); } } diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java index aa8685379..b966b7b30 100644 --- a/src/com/android/camera/PhotoUI.java +++ b/src/com/android/camera/PhotoUI.java @@ -767,8 +767,6 @@ public class PhotoUI implements PieListener, mLocationDialog.dismiss(); } mLocationDialog = null; - mPreviewWidth = 0; - mPreviewHeight = 0; } public void initDisplayChangeListener() { @@ -845,6 +843,7 @@ public class PhotoUI implements PieListener, @Override public void onDisplayChanged() { + Log.d(TAG, "Device flip detected."); mCameraControls.checkLayoutFlip(); mController.updateCameraOrientation(); } diff --git a/src/com/android/camera/ui/RotatableLayout.java b/src/com/android/camera/ui/RotatableLayout.java index 04c36331d..6867e6a8b 100644 --- a/src/com/android/camera/ui/RotatableLayout.java +++ b/src/com/android/camera/ui/RotatableLayout.java @@ -19,11 +19,8 @@ package com.android.camera.ui; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; -import android.graphics.Point; import android.util.AttributeSet; -import android.view.Display; import android.view.Gravity; -import android.view.Surface; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; @@ -73,14 +70,16 @@ public class RotatableLayout extends FrameLayout { // we need to rotate the view if necessary. After that, onConfigurationChanged // call will track all the subsequent device rotation. if (mPrevRotation == UNKOWN_ORIENTATION) { - calculateDefaultOrientation(); + mIsDefaultToPortrait = CameraUtil.isDefaultToPortrait((Activity) getContext()); if (mIsDefaultToPortrait) { // Natural orientation for tablet is landscape mPrevRotation = mInitialOrientation == Configuration.ORIENTATION_PORTRAIT ? 0 : 90; } else { + // When tablet orientation is 0 or 270 (i.e. getUnifiedOrientation + // = 0 or 90), we load the layout resource without any rotation. mPrevRotation = mInitialOrientation == Configuration.ORIENTATION_LANDSCAPE ? - 0 : 90; + 0 : 270; } // check if there is any rotation before the view is attached to window @@ -88,22 +87,6 @@ public class RotatableLayout extends FrameLayout { } } - private void calculateDefaultOrientation() { - Display currentDisplay = getDisplay(); - Point displaySize = new Point(); - currentDisplay.getSize(displaySize); - int orientation = currentDisplay.getRotation(); - int naturalWidth, naturalHeight; - if (orientation == Surface.ROTATION_0 || orientation == Surface.ROTATION_180) { - naturalWidth = displaySize.x; - naturalHeight = displaySize.y; - } else { - naturalWidth = displaySize.y; - naturalHeight = displaySize.x; - } - mIsDefaultToPortrait = naturalWidth < naturalHeight; - } - private void rotateIfNeeded() { if (mPrevRotation == UNKOWN_ORIENTATION) { return; diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java index 458ae04f2..eff0c4078 100644 --- a/src/com/android/camera/util/CameraUtil.java +++ b/src/com/android/camera/util/CameraUtil.java @@ -43,6 +43,7 @@ import android.telephony.TelephonyManager; import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; +import android.view.Display; import android.view.OrientationEventListener; import android.view.Surface; import android.view.View; @@ -411,6 +412,28 @@ public class CameraUtil { return 0; } + /** + * Calculate the default orientation of the device based on the width and + * height of the display when rotation = 0 (i.e. natural width and height) + * @param activity the activity context + * @return whether the default orientation of the device is portrait + */ + public static boolean isDefaultToPortrait(Activity activity) { + Display currentDisplay = activity.getWindowManager().getDefaultDisplay(); + Point displaySize = new Point(); + currentDisplay.getSize(displaySize); + int orientation = currentDisplay.getRotation(); + int naturalWidth, naturalHeight; + if (orientation == Surface.ROTATION_0 || orientation == Surface.ROTATION_180) { + naturalWidth = displaySize.x; + naturalHeight = displaySize.y; + } else { + naturalWidth = displaySize.y; + naturalHeight = displaySize.x; + } + return naturalWidth < naturalHeight; + } + public static int getDisplayOrientation(int degrees, int cameraId) { // See android.hardware.Camera.setDisplayOrientation for // documentation. |