summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/camera/AndroidCameraManagerImpl.java11
-rw-r--r--src/com/android/camera/CameraManager.java1
-rw-r--r--src/com/android/camera/PhotoModule.java8
-rw-r--r--src/com/android/camera/PhotoUI.java1
-rw-r--r--src/com/android/camera/ui/ModuleSwitcher.java9
5 files changed, 28 insertions, 2 deletions
diff --git a/src/com/android/camera/AndroidCameraManagerImpl.java b/src/com/android/camera/AndroidCameraManagerImpl.java
index 1a9e2a7dc..3bfe0c2cb 100644
--- a/src/com/android/camera/AndroidCameraManagerImpl.java
+++ b/src/com/android/camera/AndroidCameraManagerImpl.java
@@ -74,6 +74,7 @@ class AndroidCameraManagerImpl implements CameraManager {
private static final int ADD_CALLBACK_BUFFER = 105;
private static final int SET_PREVIEW_DISPLAY_ASYNC = 106;
private static final int SET_PREVIEW_CALLBACK = 107;
+ private static final int SET_ONESHOT_PREVIEW_CALLBACK = 108;
// Parameters
private static final int SET_PARAMETERS = 201;
private static final int GET_PARAMETERS = 202;
@@ -340,6 +341,9 @@ class AndroidCameraManagerImpl implements CameraManager {
mCamera.setPreviewCallback((PreviewCallback) msg.obj);
return;
+ case SET_ONESHOT_PREVIEW_CALLBACK:
+ mCamera.setOneShotPreviewCallback((PreviewCallback) msg.obj);
+
case ENABLE_SHUTTER_SOUND:
enableShutterSound((msg.arg1 == 1) ? true : false);
return;
@@ -498,6 +502,13 @@ class AndroidCameraManagerImpl implements CameraManager {
}
@Override
+ public void setOneShotPreviewCallback(Handler handler, CameraPreviewDataCallback cb) {
+ mCameraHandler.obtainMessage(
+ SET_ONESHOT_PREVIEW_CALLBACK,
+ PreviewCallbackForward.getNewInstance(handler, this, cb)).sendToTarget();
+ }
+
+ @Override
public void addCallbackBuffer(byte[] callbackBuffer) {
mCameraHandler.obtainMessage(ADD_CALLBACK_BUFFER, callbackBuffer).sendToTarget();
}
diff --git a/src/com/android/camera/CameraManager.java b/src/com/android/camera/CameraManager.java
index 1856ec85c..e7d535060 100644
--- a/src/com/android/camera/CameraManager.java
+++ b/src/com/android/camera/CameraManager.java
@@ -240,6 +240,7 @@ public interface CameraManager {
*/
public void setPreviewDataCallbackWithBuffer(Handler handler, CameraPreviewDataCallback cb);
+ public void setOneShotPreviewCallback(Handler handler, CameraPreviewDataCallback cb);
/**
* Adds buffer for the preview callback.
*
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index fd251cee3..54787bd2b 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -532,7 +532,6 @@ public class PhotoModule
if (mCameraState == SNAPSHOT_IN_PROGRESS) {
return;
}
- mUI.hidePreviewCover();
setCameraState(IDLE);
mFocusManager.onPreviewStarted();
startFaceDetection();
@@ -2646,6 +2645,13 @@ public class PhotoModule
setCameraParameters(UPDATE_PARAM_ALL);
mCameraDevice.startPreview();
+ mCameraDevice.setOneShotPreviewCallback(mHandler,
+ new CameraManager.CameraPreviewDataCallback() {
+ @Override
+ public void onPreviewFrame(byte[] data, CameraProxy camera) {
+ mUI.hidePreviewCover();
+ }
+ });
mHandler.sendEmptyMessage(ON_PREVIEW_STARTED);
setDisplayOrientation();
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index 5707f7b62..f8667254a 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -553,6 +553,7 @@ public class PhotoUI implements PieListener,
});
if (mController.isImageCaptureIntent()) {
hideSwitcher();
+ mSwitcher.setSwitcherVisibility(false);
ViewGroup cameraControls = (ViewGroup) mRootView.findViewById(R.id.camera_controls);
mActivity.getLayoutInflater().inflate(R.layout.review_module_control, cameraControls);
diff --git a/src/com/android/camera/ui/ModuleSwitcher.java b/src/com/android/camera/ui/ModuleSwitcher.java
index 6c20da497..217c92a54 100644
--- a/src/com/android/camera/ui/ModuleSwitcher.java
+++ b/src/com/android/camera/ui/ModuleSwitcher.java
@@ -53,6 +53,7 @@ public class ModuleSwitcher extends RotateImageView
public static final int LIGHTCYCLE_MODULE_INDEX = 3;
public static final int GCAM_MODULE_INDEX = 4;
private boolean mTouchEnabled = true;
+ private boolean mIsVisible = true;
private static final int[] DRAW_IDS = {
R.drawable.ic_switch_camera,
@@ -267,9 +268,15 @@ public class ModuleSwitcher extends RotateImageView
mParent.setOnTouchListener(null);
}
+ public void setSwitcherVisibility(boolean isVisible) {
+ mIsVisible = isVisible;
+ }
+
public void removePopup() {
mShowingPopup = false;
- setVisibility(View.VISIBLE);
+ if (mIsVisible) {
+ setVisibility(View.VISIBLE);
+ }
if (mPopup != null) {
((ViewGroup) mParent).removeView(mPopup);
mPopup = null;