summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/camera/PhotoModule.java7
-rw-r--r--src/com/android/camera/PhotoUI.java3
-rw-r--r--src/com/android/camera/ui/RotatableLayout.java25
-rw-r--r--src/com/android/camera/util/CameraUtil.java23
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.