summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorztenghui <ztenghui@google.com>2013-09-09 14:58:44 -0700
committerztenghui <ztenghui@google.com>2013-09-11 17:12:24 -0700
commit7b265a6b2f55c6ae7afc30e63ba324c4084a5d8e (patch)
tree8c70ed32155287e4f023af0df1af439688188eed /src
parent20703f72e087a01e6a589c2875819cf817581a51 (diff)
downloadandroid_packages_apps_Snap-7b265a6b2f55c6ae7afc30e63ba324c4084a5d8e.tar.gz
android_packages_apps_Snap-7b265a6b2f55c6ae7afc30e63ba324c4084a5d8e.tar.bz2
android_packages_apps_Snap-7b265a6b2f55c6ae7afc30e63ba324c4084a5d8e.zip
Fix the flash mode transition in video mode
onSwitchMode is wrongly overloaded, now is fixed. Basically, onCurrentDataChanged will handle the switching in and out of Camera. onDataFullScreenChange will handle full screen change on non-preview data. bug:10610967 Change-Id: I199a20d40d66b78302e90e0f96826d03076b0e39
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/CameraActivity.java36
-rw-r--r--src/com/android/camera/CameraModule.java5
-rw-r--r--src/com/android/camera/PhotoModule.java12
-rw-r--r--src/com/android/camera/PhotoUI.java20
-rw-r--r--src/com/android/camera/VideoModule.java74
-rw-r--r--src/com/android/camera/VideoUI.java11
-rw-r--r--src/com/android/camera/WideAnglePanoramaModule.java8
-rw-r--r--src/com/android/camera/ui/FilmStripView.java18
8 files changed, 87 insertions, 97 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 672801579..bbe0ebb08 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -232,15 +232,10 @@ public class CameraActivity extends Activity
@Override
public void onDataFullScreenChange(int dataID, boolean full) {
- }
-
- @Override
- public void onSwitchMode(boolean toCamera) {
- mCurrentModule.onSwitchMode(toCamera);
- if (toCamera) {
- setActionBarVisibilityAndLightsOut(true);
- } else {
- setActionBarVisibilityAndLightsOut(false);
+ boolean isCameraID = mDataAdapter.getLocalData(dataID).getLocalDataType() ==
+ LocalData.LOCAL_CAMERA_PREVIEW;
+ if (!isCameraID) {
+ setActionBarVisibilityAndLightsOut(full);
}
}
@@ -249,18 +244,23 @@ public class CameraActivity extends Activity
runOnUiThread(new Runnable() {
@Override
public void run() {
+ LocalData currentData = mDataAdapter.getLocalData(dataID);
+ if (currentData == null) {
+ Log.w(TAG, "Current data ID not found.");
+ hidePanoStitchingProgress();
+ return;
+ }
+ boolean isCameraID = currentData.getLocalDataType() ==
+ LocalData.LOCAL_CAMERA_PREVIEW;
if (!current) {
+ if (isCameraID) {
+ mCurrentModule.onPreviewFocusChanged(false);
+ setActionBarVisibilityAndLightsOut(false);
+ }
hidePanoStitchingProgress();
} else {
- LocalData currentData = mDataAdapter.getLocalData(dataID);
- if (currentData == null) {
- Log.w(TAG, "Current data ID not found.");
- hidePanoStitchingProgress();
- return;
- }
-
- if (currentData.getLocalDataType() ==
- LocalData.LOCAL_CAMERA_PREVIEW) {
+ if (isCameraID) {
+ mCurrentModule.onPreviewFocusChanged(true);
// Don't show the action bar in Camera preview.
setActionBarVisibilityAndLightsOut(true);
} else {
diff --git a/src/com/android/camera/CameraModule.java b/src/com/android/camera/CameraModule.java
index bcfe98d65..1283a982c 100644
--- a/src/com/android/camera/CameraModule.java
+++ b/src/com/android/camera/CameraModule.java
@@ -19,14 +19,13 @@ package com.android.camera;
import android.content.Intent;
import android.content.res.Configuration;
import android.view.KeyEvent;
-import android.view.MotionEvent;
import android.view.View;
public interface CameraModule {
public void init(CameraActivity activity, View frame);
- public void onSwitchMode(boolean toCamera);
+ public void onPreviewFocusChanged(boolean previewFocused);
public void onPauseBeforeSuper();
@@ -60,8 +59,6 @@ public interface CameraModule {
public boolean updateStorageHintOnResume();
- public void updateCameraAppView();
-
public void onOrientationChanged(int orientation);
public void onShowSwitcherPopup();
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 8e03131c4..789446dcd 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -406,6 +406,7 @@ public class PhotoModule
mUI.showLocationDialog();
}
+ @Override
public void enableRecordingLocation(boolean enable) {
setLocationPreference(enable ? RecordLocationPreference.VALUE_ON
: RecordLocationPreference.VALUE_OFF);
@@ -505,6 +506,7 @@ public class PhotoModule
}
+ @Override
public void onScreenSizeChanged(int width, int height, int previewWidth, int previewHeight) {
if (mFocusManager != null) mFocusManager.setPreviewSize(width, height);
}
@@ -1160,10 +1162,6 @@ public class PhotoModule
}
@Override
- public void updateCameraAppView() {
- }
-
- @Override
public void onResumeBeforeSuper() {
mPaused = false;
}
@@ -1768,6 +1766,7 @@ public class PhotoModule
}
}
+ @Override
public boolean isCameraIdle() {
return (mCameraState == IDLE) ||
(mCameraState == PREVIEW_STOPPED) ||
@@ -1775,6 +1774,7 @@ public class PhotoModule
&& (mCameraState != SWITCHING_CAMERA));
}
+ @Override
public boolean isImageCaptureIntent() {
String action = mActivity.getIntent().getAction();
return (MediaStore.ACTION_IMAGE_CAPTURE.equals(action)
@@ -1941,8 +1941,8 @@ public class PhotoModule
}
@Override
- public void onSwitchMode(boolean toCamera) {
- mUI.onSwitchMode(toCamera);
+ public void onPreviewFocusChanged(boolean previewFocused) {
+ mUI.onPreviewFocusChanged(previewFocused);
}
/* Below is no longer needed, except to get rid of compile error
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index 73840ab06..de555485c 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -265,6 +265,7 @@ public class PhotoUI implements PieListener,
return true;
}
+ @Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
// Do nothing.
}
@@ -454,8 +455,10 @@ public class PhotoUI implements PieListener,
}
}
+ @Override
public void showGpsOnScreenIndicator(boolean hasSignal) { }
+ @Override
public void hideGpsOnScreenIndicator() { }
public void overrideSettings(final String ... keyvalues) {
@@ -518,27 +521,27 @@ public class PhotoUI implements PieListener,
}
}
- public void onSwitchMode(boolean toCamera) {
- if (toCamera) {
+ public void onPreviewFocusChanged(boolean previewFocused) {
+ if (previewFocused) {
showUI();
} else {
hideUI();
}
if (mFaceView != null) {
- mFaceView.setBlockDraw(!toCamera);
+ mFaceView.setBlockDraw(!previewFocused);
}
if (mGestures != null) {
- mGestures.setEnabled(toCamera);
+ mGestures.setEnabled(previewFocused);
}
if (mRenderOverlay != null) {
// this can not happen in capture mode
- mRenderOverlay.setVisibility(toCamera ? View.VISIBLE : View.GONE);
+ mRenderOverlay.setVisibility(previewFocused ? View.VISIBLE : View.GONE);
}
if (mPieRenderer != null) {
- mPieRenderer.setBlockFocus(!toCamera);
+ mPieRenderer.setBlockFocus(!previewFocused);
}
- setShowMenu(toCamera);
- if (!toCamera && mCountDownView != null) mCountDownView.cancelCountDown();
+ setShowMenu(previewFocused);
+ if (!previewFocused && mCountDownView != null) mCountDownView.cancelCountDown();
}
public void showPopup(AbstractSettingPopup popup) {
@@ -801,6 +804,7 @@ public class PhotoUI implements PieListener,
mFaceView.setFaces(faces);
}
+ @Override
public void onDisplayChanged() {
mCameraControls.checkLayoutFlip();
mController.updateCameraOrientation();
diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java
index 2173c9fb2..56882e1cf 100644
--- a/src/com/android/camera/VideoModule.java
+++ b/src/com/android/camera/VideoModule.java
@@ -463,17 +463,20 @@ public class VideoModule implements CameraModule,
}
}
+ @Override
@OnClickAttr
public void onReviewPlayClicked(View v) {
startPlayVideoActivity();
}
+ @Override
@OnClickAttr
public void onReviewDoneClicked(View v) {
mIsInReviewMode = false;
doReturnToCaller(true);
}
+ @Override
@OnClickAttr
public void onReviewCancelClicked(View v) {
mIsInReviewMode = false;
@@ -1490,25 +1493,7 @@ public class VideoModule implements CameraModule,
mParameters.setPreviewFrameRate(mProfile.videoFrameRate);
}
- // Set flash mode.
- String flashMode;
- if (mUI.isVisible()) {
- flashMode = mPreferences.getString(
- CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE,
- mActivity.getString(R.string.pref_camera_video_flashmode_default));
- } else {
- flashMode = Parameters.FLASH_MODE_OFF;
- }
- List<String> supportedFlash = mParameters.getSupportedFlashModes();
- if (isSupported(flashMode, supportedFlash)) {
- mParameters.setFlashMode(flashMode);
- } else {
- flashMode = mParameters.getFlashMode();
- if (flashMode == null) {
- flashMode = mActivity.getString(
- R.string.pref_camera_flashmode_no_flash);
- }
- }
+ forceFlashOffIfSupported(!mUI.isVisible());
// Set white balance parameter.
String whiteBalance = mPreferences.getString(
@@ -1711,27 +1696,46 @@ public class VideoModule implements CameraModule,
}
}
- @Override
- public void updateCameraAppView() {
- if (!mPreviewing || mParameters.getFlashMode() == null) return;
-
- // When going to and back from gallery, we need to turn off/on the flash.
- if (!mUI.isVisible()) {
- if (mParameters.getFlashMode().equals(Parameters.FLASH_MODE_OFF)) {
- mRestoreFlash = false;
- return;
+ private void forceFlashOffIfSupported(boolean forceOff) {
+ String flashMode;
+ if (!forceOff) {
+ flashMode = mPreferences.getString(
+ CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE,
+ mActivity.getString(R.string.pref_camera_video_flashmode_default));
+ } else {
+ flashMode = Parameters.FLASH_MODE_OFF;
+ }
+ List<String> supportedFlash = mParameters.getSupportedFlashModes();
+ if (isSupported(flashMode, supportedFlash)) {
+ mParameters.setFlashMode(flashMode);
+ } else {
+ flashMode = mParameters.getFlashMode();
+ if (flashMode == null) {
+ flashMode = mActivity.getString(
+ R.string.pref_camera_flashmode_no_flash);
}
- mRestoreFlash = true;
- setCameraParameters();
- } else if (mRestoreFlash) {
- mRestoreFlash = false;
- setCameraParameters();
}
}
+ /**
+ * Used to update the flash mode. Video mode can turn on the flash as torch
+ * mode, which we would like to turn on and off when we switching in and
+ * out to the preview.
+ *
+ * @param forceOff whether we want to force the flash off.
+ */
+ private void forceFlashOff(boolean forceOff) {
+ if (!mPreviewing || mParameters.getFlashMode() == null) {
+ return;
+ }
+ forceFlashOffIfSupported(forceOff);
+ mCameraDevice.setParameters(mParameters);
+ }
+
@Override
- public void onSwitchMode(boolean toCamera) {
- mUI.onSwitchMode(toCamera);
+ public void onPreviewFocusChanged(boolean previewFocused) {
+ mUI.onPreviewFocusChanged(previewFocused);
+ forceFlashOff(!previewFocused);
}
private final class JpegPictureCallback implements CameraPictureCallback {
diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java
index 88a7b5863..204195f44 100644
--- a/src/com/android/camera/VideoUI.java
+++ b/src/com/android/camera/VideoUI.java
@@ -612,20 +612,20 @@ public class VideoUI implements PieRenderer.PieListener,
}
}
- public void onSwitchMode(boolean toCamera) {
- if (toCamera) {
+ public void onPreviewFocusChanged(boolean previewFocused) {
+ if (previewFocused) {
showUI();
} else {
hideUI();
}
if (mGestures != null) {
- mGestures.setEnabled(toCamera);
+ mGestures.setEnabled(previewFocused);
}
if (mRenderOverlay != null) {
// this can not happen in capture mode
- mRenderOverlay.setVisibility(toCamera ? View.VISIBLE : View.GONE);
+ mRenderOverlay.setVisibility(previewFocused ? View.VISIBLE : View.GONE);
}
- setShowMenu(toCamera);
+ setShowMenu(previewFocused);
}
public void initializePopup(PreferenceGroup pref) {
@@ -672,6 +672,7 @@ public class VideoUI implements PieRenderer.PieListener,
return mTextureView.getVisibility() == View.VISIBLE;
}
+ @Override
public void onDisplayChanged() {
mCameraControls.checkLayoutFlip();
mController.updateCameraOrientation();
diff --git a/src/com/android/camera/WideAnglePanoramaModule.java b/src/com/android/camera/WideAnglePanoramaModule.java
index 053e99df7..abdb24825 100644
--- a/src/com/android/camera/WideAnglePanoramaModule.java
+++ b/src/com/android/camera/WideAnglePanoramaModule.java
@@ -308,8 +308,8 @@ public class WideAnglePanoramaModule
}
@Override
- public void onSwitchMode(boolean toCamera) {
- if (toCamera) {
+ public void onPreviewFocusChanged(boolean previewFocused) {
+ if (previewFocused) {
mUI.showUI();
} else {
mUI.hideUI();
@@ -1059,10 +1059,6 @@ public class WideAnglePanoramaModule
}
@Override
- public void updateCameraAppView() {
- }
-
- @Override
public void onShowSwitcherPopup() {
}
diff --git a/src/com/android/camera/ui/FilmStripView.java b/src/com/android/camera/ui/FilmStripView.java
index 4cf8e9461..571462177 100644
--- a/src/com/android/camera/ui/FilmStripView.java
+++ b/src/com/android/camera/ui/FilmStripView.java
@@ -329,14 +329,6 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener {
public void onDataFullScreenChange(int dataID, boolean fullScreen);
/**
- * Callback when entering/leaving camera mode.
- *
- * @param toCamera {@code true} if entering camera mode. Otherwise,
- * {@code false}
- */
- public void onSwitchMode(boolean toCamera);
-
- /**
* The callback when the item is centered/off-centered.
*
* @param dataID The ID of the image data.
@@ -1984,7 +1976,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener {
}
if (mListener != null) {
- mListener.onSwitchMode(false);
+ mListener.onDataFullScreenChange(mViewItem[mCurrentItem].getId(), false);
mBottomControls.setVisibility(View.VISIBLE);
}
}
@@ -2005,11 +1997,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener {
private void enterFullScreen() {
if (mListener != null) {
- // TODO: After full size images snapping to fill the screen at
- // the end of a scroll/fling is implemented, we should only make
- // this call when the view on the center of the screen is
- // camera preview
- mListener.onSwitchMode(true);
+ mListener.onDataFullScreenChange(mViewItem[mCurrentItem].getId(), true);
mBottomControls.setVisibility(View.GONE);
}
}
@@ -2028,7 +2016,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener {
private void leaveFullScreen() {
if (mListener != null) {
- mListener.onSwitchMode(false);
+ mListener.onDataFullScreenChange(mViewItem[mCurrentItem].getId(), false);
mBottomControls.setVisibility(View.VISIBLE);
}
}