summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/camera/AndroidCameraManagerImpl.java9
-rw-r--r--src/com/android/camera/CameraSettings.java11
-rw-r--r--src/com/android/camera/PhotoModule.java48
-rw-r--r--src/com/android/camera/PhotoUI.java29
-rw-r--r--src/com/android/camera/VideoModule.java57
-rw-r--r--src/com/android/camera/VideoUI.java33
-rw-r--r--src/com/android/camera/ui/FaceView.java43
-rw-r--r--src/com/android/camera/ui/FilmStripView.java7
8 files changed, 176 insertions, 61 deletions
diff --git a/src/com/android/camera/AndroidCameraManagerImpl.java b/src/com/android/camera/AndroidCameraManagerImpl.java
index 408bf4f55..b2d7c7681 100644
--- a/src/com/android/camera/AndroidCameraManagerImpl.java
+++ b/src/com/android/camera/AndroidCameraManagerImpl.java
@@ -201,7 +201,14 @@ class AndroidCameraManagerImpl implements CameraManager {
try {
switch (msg.what) {
case OPEN_CAMERA:
- mCamera = android.hardware.Camera.open(msg.arg1);
+ try {
+ mCamera = android.hardware.Camera.openLegacy(msg.arg1,
+ android.hardware.Camera.CAMERA_HAL_API_VERSION_1_0);
+ } catch (RuntimeException e) {
+ /* Retry with open if openLegacy fails */
+ Log.v(TAG, "openLegacy failed. Using open instead");
+ mCamera = android.hardware.Camera.open(msg.arg1);
+ }
if (mCamera != null) {
mParametersIsDirty = true;
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index c057ee01f..5a4012a5f 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -132,6 +132,7 @@ public class CameraSettings {
private static final String KEY_QC_SUPPORTED_FACE_RECOGNITION_MODES = "face-recognition-values";
private static final String KEY_QC_SUPPORTED_DIS_MODES = "dis-values";
private static final String KEY_QC_SUPPORTED_SEE_MORE_MODES = "see-more-values";
+ private static final String KEY_QC_SUPPORTED_STILL_MORE_MODES = "still-more-values";
private static final String KEY_QC_SUPPORTED_CDS_MODES = "cds-mode-values";
private static final String KEY_QC_SUPPORTED_VIDEO_CDS_MODES = "video-cds-mode-values";
private static final String KEY_QC_SUPPORTED_TNR_MODES = "tnr-mode-values";
@@ -148,6 +149,7 @@ public class CameraSettings {
public static final String KEY_QC_FSSR = "FSSR";
public static final String KEY_QC_TP = "true-portrait";
public static final String KEY_QC_MULTI_TOUCH_FOCUS = "multi-touch-focus";
+ public static final String KEY_QC_STILL_MORE = "still-more";
public static final String KEY_QC_FACE_RECOGNITION = "face-recognition";
public static final String KEY_QC_DIS_MODE = "dis";
public static final String KEY_QC_CDS_MODE = "cds-mode";
@@ -436,6 +438,7 @@ public class CameraSettings {
str += ',' + params.get(KEY_QC_SUPPORTED_MTF_MODES);
str += ',' + mContext.getString(R.string.pref_camera_advanced_feature_default);
str += ',' + params.get(KEY_QC_SUPPORTED_RE_FOCUS_MODES);
+ str += ',' + params.get(KEY_QC_SUPPORTED_STILL_MORE_MODES);
return split(str);
}
@@ -495,6 +498,14 @@ public class CameraSettings {
return split(str);
}
+ public static List<String> getSupportedStillMoreModes(Parameters params) {
+ String str = params.get(KEY_QC_SUPPORTED_STILL_MORE_MODES);
+ if (str == null) {
+ return null;
+ }
+ return split(str);
+ }
+
// Splits a comma delimited string to an ArrayList of String.
// Return null if the passing string is null or the size is 0.
private static ArrayList<String> split(String str) {
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index a915d0845..887982156 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -1682,6 +1682,10 @@ public class PhotoModule
mParameters.get(CameraSettings.KEY_QC_TP);
String multiTouchFocus =
mParameters.get(CameraSettings.KEY_QC_MULTI_TOUCH_FOCUS);
+ String stillMoreOn = mActivity.getString(R.string.
+ pref_camera_advanced_feature_value_stillmore_on);
+ String stillMore =
+ mParameters.get(CameraSettings.KEY_QC_STILL_MORE);
String continuousShot =
mParameters.get("long-shot");
@@ -1710,7 +1714,8 @@ public class PhotoModule
(chromaFlash != null && chromaFlash.equals(chromaFlashOn)) ||
(optiZoom != null && optiZoom.equals(optiZoomOn)) ||
(fssr != null && fssr.equals(fssrOn)) ||
- (truePortrait != null && truePortrait.equals(truPortraitOn))) {
+ (truePortrait != null && truePortrait.equals(truPortraitOn)) ||
+ (stillMore != null && stillMore.equals(stillMoreOn))) {
mSceneMode = sceneMode = Parameters.SCENE_MODE_AUTO;
flashMode = Parameters.FLASH_MODE_OFF;
focusMode = Parameters.FOCUS_MODE_INFINITY;
@@ -2692,7 +2697,8 @@ public class PhotoModule
String optiZoom,
String fssr,
String truePortrait,
- String multiTouchFocus) {
+ String multiTouchFocus,
+ String stillMore) {
if (CameraUtil.isSupported(ubiFocus,
CameraSettings.getSupportedAFBracketingModes(mParameters))) {
mParameters.set(CameraSettings.KEY_QC_AF_BRACKETING, ubiFocus);
@@ -2721,6 +2727,10 @@ public class PhotoModule
CameraSettings.getSupportedMultiTouchFocusModes(mParameters))) {
mParameters.set(CameraSettings.KEY_QC_MULTI_TOUCH_FOCUS, multiTouchFocus);
}
+ if (CameraUtil.isSupported(stillMore,
+ CameraSettings.getSupportedStillMoreModes(mParameters))) {
+ mParameters.set(CameraSettings.KEY_QC_STILL_MORE, stillMore);
+ }
}
/** This can run on a background thread, so don't do UI updates here.*/
@@ -2968,6 +2978,8 @@ public class PhotoModule
pref_camera_advanced_feature_value_trueportrait_off);
String multiTouchFocusOff = mActivity.getString(R.string.
pref_camera_advanced_feature_value_multi_touch_focus_off);
+ String stillMoreOff = mActivity.getString(R.string.
+ pref_camera_advanced_feature_value_stillmore_off);
if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_ubifocus_on))) {
@@ -2977,7 +2989,8 @@ public class PhotoModule
optiZoomOff,
fssrOff,
truePortraitOff,
- multiTouchFocusOff);
+ multiTouchFocusOff,
+ stillMoreOff);
} else if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_chromaflash_on))) {
qcomUpdateAdvancedFeatures(ubiFocusOff,
@@ -2986,7 +2999,8 @@ public class PhotoModule
optiZoomOff,
fssrOff,
truePortraitOff,
- multiTouchFocusOff);
+ multiTouchFocusOff,
+ stillMoreOff);
} else if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_refocus_on))) {
qcomUpdateAdvancedFeatures(ubiFocusOff,
@@ -2995,7 +3009,8 @@ public class PhotoModule
optiZoomOff,
fssrOff,
truePortraitOff,
- multiTouchFocusOff);
+ multiTouchFocusOff,
+ stillMoreOff);
mRefocus = true;
} else if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_optizoom_on))) {
@@ -3005,7 +3020,8 @@ public class PhotoModule
advancedFeature,
fssrOff,
truePortraitOff,
- multiTouchFocusOff);
+ multiTouchFocusOff,
+ stillMoreOff);
} else if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_FSSR_on))) {
qcomUpdateAdvancedFeatures(ubiFocusOff,
@@ -3014,7 +3030,8 @@ public class PhotoModule
optiZoomOff,
advancedFeature,
truePortraitOff,
- multiTouchFocusOff);
+ multiTouchFocusOff,
+ stillMoreOff);
} else if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_trueportrait_on))) {
qcomUpdateAdvancedFeatures(ubiFocusOff,
@@ -3023,7 +3040,8 @@ public class PhotoModule
optiZoomOff,
fssrOff,
advancedFeature,
- multiTouchFocusOff);
+ multiTouchFocusOff,
+ stillMoreOff);
} else if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_multi_touch_focus_on))) {
qcomUpdateAdvancedFeatures(ubiFocusOff,
@@ -3032,6 +3050,17 @@ public class PhotoModule
optiZoomOff,
fssrOff,
truePortraitOff,
+ advancedFeature,
+ stillMoreOff);
+ } else if (advancedFeature.equals(mActivity.getString(R.string.
+ pref_camera_advanced_feature_value_stillmore_on))) {
+ qcomUpdateAdvancedFeatures(ubiFocusOff,
+ chromaFlashOff,
+ reFocusOff,
+ optiZoomOff,
+ fssrOff,
+ truePortraitOff,
+ multiTouchFocusOff,
advancedFeature);
} else {
qcomUpdateAdvancedFeatures(ubiFocusOff,
@@ -3040,7 +3069,8 @@ public class PhotoModule
optiZoomOff,
fssrOff,
truePortraitOff,
- multiTouchFocusOff);
+ multiTouchFocusOff,
+ stillMoreOff);
}
}
// Set auto exposure parameter.
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index 354b7b2f4..3f2000cd9 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -799,15 +799,22 @@ public class PhotoUI implements PieListener,
}
public void showPopup(ListView popup, int level, boolean animate) {
+ FrameLayout.LayoutParams params;
hideUI();
popup.setVisibility(View.VISIBLE);
if (level == 1) {
if (mMenuLayout == null) {
mMenuLayout = new RotateLayout(mActivity, null);
- FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
- CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT,
- Gravity.LEFT | Gravity.TOP);
+ if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) {
+ params = new FrameLayout.LayoutParams(
+ CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT,
+ Gravity.LEFT | Gravity.TOP);
+ } else {
+ params = new FrameLayout.LayoutParams(
+ CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT,
+ Gravity.RIGHT | Gravity.TOP);
+ }
mMenuLayout.setLayoutParams(params);
((ViewGroup) mRootView).addView(mMenuLayout);
}
@@ -819,10 +826,15 @@ public class PhotoUI implements PieListener,
mSubMenuLayout = new RotateLayout(mActivity, null);
((ViewGroup) mRootView).addView(mSubMenuLayout);
}
- FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
- CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT,
- Gravity.LEFT | Gravity.TOP);
-
+ if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) {
+ params = new FrameLayout.LayoutParams(
+ CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT,
+ Gravity.LEFT | Gravity.TOP);
+ } else {
+ params = new FrameLayout.LayoutParams(
+ CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT,
+ Gravity.RIGHT | Gravity.TOP);
+ }
int screenHeight = (mOrientation == 0 || mOrientation == 180)
? mRootView.getHeight() : mRootView.getWidth();
int height = ((ListSubMenu) popup).getPreCalculatedHeight();
@@ -1258,6 +1270,9 @@ public class PhotoUI implements PieListener,
if (mCountDownView != null)
mCountDownView.setOrientation(orientation);
RotateTextToast.setOrientation(orientation);
+ if (mFaceView != null) {
+ mFaceView.setDisplayRotation(orientation);
+ }
}
public int getOrientation() {
diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java
index 6e3198390..17b8ce1ce 100644
--- a/src/com/android/camera/VideoModule.java
+++ b/src/com/android/camera/VideoModule.java
@@ -2063,15 +2063,6 @@ public class VideoModule implements CameraModule,
}
Log.d(TAG, "antiBanding value = " + mParameters.getAntibanding());
- String seeMoreMode = mPreferences.getString(
- CameraSettings.KEY_SEE_MORE,
- mActivity.getString(R.string.pref_camera_see_more_default));
- Log.v(TAG, "See More value =" + seeMoreMode);
- if (isSupported(seeMoreMode,
- CameraSettings.getSupportedSeeMoreModes(mParameters))) {
- mParameters.set(CameraSettings.KEY_QC_SEE_MORE_MODE, seeMoreMode);
- }
-
mUnsupportedHFRVideoSize = false;
mUnsupportedHFRVideoCodec = false;
mUnsupportedHSRVideoSize = false;
@@ -2236,6 +2227,54 @@ public class VideoModule implements CameraModule,
mUI.overrideSettings(CameraSettings.KEY_QC_VIDEO_TNR_MODE, video_tnr);
}
+ String seeMoreMode = mPreferences.getString(
+ CameraSettings.KEY_SEE_MORE,
+ mActivity.getString(R.string.pref_camera_see_more_default));
+ Log.v(TAG, "See More value =" + seeMoreMode);
+
+ if (isSupported(seeMoreMode,
+ CameraSettings.getSupportedSeeMoreModes(mParameters))) {
+ if (is4KEnabled() && seeMoreMode.equals(mActivity.getString(R.string.
+ pref_camera_see_more_value_on))) {
+ /* Disable SeeMore during 4K resolution */
+ mParameters.set(CameraSettings.KEY_QC_SEE_MORE_MODE,
+ mActivity.getString(R.string.pref_camera_see_more_value_off));
+ mUI.overrideSettings(CameraSettings.KEY_SEE_MORE,
+ mActivity.getString(R.string.pref_camera_see_more_value_off));
+ Toast.makeText(mActivity, R.string.video_quality_4k_disable_SeeMore,
+ Toast.LENGTH_LONG).show();
+ } else {
+ /* Disable CDS */
+ if (seeMoreMode.equals(
+ mActivity.getString(R.string.pref_camera_see_more_value_on)) &&
+ video_cds.equals(mActivity.getString(R.string.
+ pref_camera_video_cds_value_on))) {
+ mParameters.set(CameraSettings.KEY_QC_VIDEO_CDS_MODE,
+ mActivity.getString(R.string.pref_camera_video_cds_value_off));
+ mUI.overrideSettings(CameraSettings.KEY_QC_VIDEO_CDS_MODE,
+ mActivity.getString(R.string.pref_camera_video_cds_value_off));
+ Toast.makeText(mActivity, R.string.disable_CDS_during_SeeMore,
+ Toast.LENGTH_LONG).show();
+ }
+
+ /* Disable TNR */
+ if (seeMoreMode.equals(
+ mActivity.getString(R.string.pref_camera_see_more_value_on)) &&
+ video_tnr.equals(mActivity.getString(R.string.
+ pref_camera_video_tnr_value_on))) {
+ mParameters.set(CameraSettings.KEY_QC_VIDEO_TNR_MODE,
+ mActivity.getString(R.string.pref_camera_video_tnr_value_off));
+ mUI.overrideSettings(CameraSettings.KEY_QC_VIDEO_TNR_MODE,
+ mActivity.getString(R.string.pref_camera_video_tnr_value_off));
+ Toast.makeText(mActivity, R.string.disable_TNR_during_SeeMore,
+ Toast.LENGTH_LONG).show();
+ }
+
+ /* Set SeeMore mode */
+ mParameters.set(CameraSettings.KEY_QC_SEE_MORE_MODE, seeMoreMode);
+ }
+ }
+
// Set Video HDR.
String videoHDR = mPreferences.getString(
CameraSettings.KEY_VIDEO_HDR,
diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java
index ab3a50a02..cc06e7b79 100644
--- a/src/com/android/camera/VideoUI.java
+++ b/src/com/android/camera/VideoUI.java
@@ -745,16 +745,23 @@ public class VideoUI implements PieRenderer.PieListener,
}
public void showPopup(ListView popup, int level, boolean animate) {
+ FrameLayout.LayoutParams layoutParams;
hideUI();
popup.setVisibility(View.VISIBLE);
if (level == 1) {
if (mMenuLayout == null) {
mMenuLayout = new RotateLayout(mActivity, null);
- FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
- CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT,
- Gravity.LEFT | Gravity.TOP);
- mMenuLayout.setLayoutParams(params);
+ if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) {
+ layoutParams = new FrameLayout.LayoutParams(
+ CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT,
+ Gravity.LEFT | Gravity.TOP);
+ } else {
+ layoutParams = new FrameLayout.LayoutParams(
+ CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT,
+ Gravity.RIGHT | Gravity.TOP);
+ }
+ mMenuLayout.setLayoutParams(layoutParams);
((ViewGroup) mRootView).addView(mMenuLayout);
}
mMenuLayout.setOrientation(mOrientation, true);
@@ -769,9 +776,15 @@ public class VideoUI implements PieRenderer.PieListener,
((ViewGroup) mRootView).addView(mSubMenuLayout);
}
- FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
- CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT,
- Gravity.LEFT | Gravity.TOP);
+ if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) {
+ layoutParams = new FrameLayout.LayoutParams(
+ CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT,
+ Gravity.LEFT | Gravity.TOP);
+ } else {
+ layoutParams = new FrameLayout.LayoutParams(
+ CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT,
+ Gravity.RIGHT | Gravity.TOP);
+ }
int screenHeight = (mOrientation == 0 || mOrientation == 180)
? mRootView.getHeight() : mRootView.getWidth();
@@ -780,10 +793,10 @@ public class VideoUI implements PieRenderer.PieListener,
int y = Math.max(0, yBase);
if (yBase + height > screenHeight)
y = Math.max(0, screenHeight - height);
- params.setMargins(0, y, 0, 0);
- params.setMarginStart(CameraActivity.SETTING_LIST_WIDTH_1);
+ layoutParams.setMargins(0, y, 0, 0);
+ layoutParams.setMarginStart(CameraActivity.SETTING_LIST_WIDTH_1);
- mSubMenuLayout.setLayoutParams(params);
+ mSubMenuLayout.setLayoutParams(layoutParams);
mSubMenuLayout.addView(popup);
mSubMenuLayout.setOrientation(mOrientation, true);
}
diff --git a/src/com/android/camera/ui/FaceView.java b/src/com/android/camera/ui/FaceView.java
index 8013520a9..4ab74e4cf 100644
--- a/src/com/android/camera/ui/FaceView.java
+++ b/src/com/android/camera/ui/FaceView.java
@@ -72,6 +72,7 @@ public class FaceView extends View
private static final int MSG_SWITCH_FACES = 1;
private static final int SWITCH_DELAY = 70;
+ private int mDisplayRotation = 0;
private boolean mStateSwitchPending = false;
private Handler mHandler = new Handler() {
@Override
@@ -194,6 +195,9 @@ public class FaceView extends View
mBlocked = block;
}
+ public void setDisplayRotation(int orientation) {
+ mDisplayRotation = orientation;
+ }
@Override
protected void onDraw(Canvas canvas) {
if (!mBlocked && (mFaces != null) && (mFaces.length > 0)) {
@@ -236,8 +240,8 @@ public class FaceView extends View
Log.e(TAG, "blink: (" + face.getLeftEyeBlinkDegree()+ ", " +
face.getRightEyeBlinkDegree() + ")");
if (face.leftEye != null) {
- if ((mDisplayOrientation == 90) ||
- (mDisplayOrientation == 270)) {
+ if ((mDisplayRotation == 0) ||
+ (mDisplayRotation == 180)) {
point[0] = face.leftEye.x;
point[1] = face.leftEye.y - delta_y / 2;
point[2] = face.leftEye.x;
@@ -256,8 +260,8 @@ public class FaceView extends View
}
}
if (face.rightEye != null) {
- if ((mDisplayOrientation == 90) ||
- (mDisplayOrientation == 270)) {
+ if ((mDisplayRotation == 0) ||
+ (mDisplayRotation == 180)) {
point[0] = face.rightEye.x;
point[1] = face.rightEye.y - delta_y / 2;
point[2] = face.rightEye.x;
@@ -306,8 +310,8 @@ public class FaceView extends View
(-length) + 0.5);
if (face.getLeftEyeBlinkDegree() < blink_threshold) {
- if ((mDisplayOrientation == 90) ||
- (mDisplayOrientation == 270)) {
+ if ((mDisplayRotation == 90) ||
+ (mDisplayRotation == 270)) {
point[0] = face.leftEye.x;
point[1] = face.leftEye.y;
point[2] = face.leftEye.x + gazeRollX;
@@ -324,8 +328,8 @@ public class FaceView extends View
}
if (face.getRightEyeBlinkDegree() < blink_threshold) {
- if ((mDisplayOrientation == 90) ||
- (mDisplayOrientation == 270)) {
+ if ((mDisplayRotation == 90) ||
+ (mDisplayRotation == 270)) {
point[0] = face.rightEye.x;
point[1] = face.rightEye.y;
point[2] = face.rightEye.x + gazeRollX;
@@ -347,17 +351,17 @@ public class FaceView extends View
Log.e(TAG, "smile: " + face.getSmileDegree() + "," +
face.getSmileScore());
if (face.getSmileDegree() < smile_threashold_no_smile) {
- if ((mDisplayOrientation == 90) ||
- (mDisplayOrientation == 270)) {
- point[0] = face.mouth.x;
- point[1] = face.mouth.y - delta_y + dy;
- point[2] = face.mouth.x;
- point[3] = face.mouth.y + delta_y + dy;
- } else {
+ if ((mDisplayRotation == 90) ||
+ (mDisplayRotation == 270)) {
point[0] = face.mouth.x + dx - delta_x;
point[1] = face.mouth.y;
- point[2] = face.mouth.x + dx + delta_x ;
+ point[2] = face.mouth.x + dx + delta_x;
point[3] = face.mouth.y;
+ } else {
+ point[0] = face.mouth.x;
+ point[1] = face.mouth.y + dy - delta_y;
+ point[2] = face.mouth.x ;
+ point[3] = face.mouth.y + dy + delta_y;
}
Matrix faceMatrix = new Matrix(mMatrix);
faceMatrix.preRotate(face.getRollDirection(),
@@ -368,12 +372,7 @@ public class FaceView extends View
} else if (face.getSmileDegree() <
smile_threashold_small_smile) {
- int rotation_mouth = mDisplayOrientation -
- face.getRollDirection();
- if (0 > rotation_mouth) {
- rotation_mouth = 360 + rotation_mouth;
- }
-
+ int rotation_mouth = 360 - mDisplayRotation;
mRect.set(face.mouth.x-delta_x,
face.mouth.y-delta_y, face.mouth.x+delta_x,
face.mouth.y+delta_y);
diff --git a/src/com/android/camera/ui/FilmStripView.java b/src/com/android/camera/ui/FilmStripView.java
index 3f1029ed1..46267a941 100644
--- a/src/com/android/camera/ui/FilmStripView.java
+++ b/src/com/android/camera/ui/FilmStripView.java
@@ -107,6 +107,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener {
private boolean mSendToMenu;
private boolean mReset;
private boolean mIsLoaded = false;
+ private boolean initialClampX = false;
/**
* Common interface for all images in the filmstrip.
@@ -994,7 +995,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener {
}
boolean stopScroll = false;
- if (curr.getId() == 0 && mCenterX < curr.getCenterX()
+ if (curr.getId() == 0 && (mCenterX < curr.getCenterX() || initialClampX)
&& mDataIdOnUserScrolling <= 1) {
// Stop at the first ViewItem.
stopScroll = true;
@@ -1786,7 +1787,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener {
if (!inFullScreen() || mController.isScrolling()) {
return true;
}
-
+ initialClampX = false;
if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
mCheckToIntercept = true;
mDown = MotionEvent.obtain(ev);
@@ -2076,7 +2077,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener {
// center of the display upon a reload.
mCenterX = -1;
mScale = FULL_SCREEN_SCALE;
-
+ initialClampX = true;
adjustChildZOrder();
invalidate();