From 3931c0448a5692d0f0152a66dfa3c56c8f3d575d Mon Sep 17 00:00:00 2001 From: Alan Newberger Date: Thu, 7 Aug 2014 17:57:15 -0700 Subject: Fix missing zoom fields in copy constructor of CameraCapabilities These fields are deprecated but while we have them, should copy them in the constructor. This contributes to a zoom bug in the app, since ratios and indices are dropped upon copy. Bug: 16527845 Change-Id: I008384faa77e0c13a2790e095fa311909c1e9b44 --- .../src/com/android/ex/camera2/portability/CameraCapabilities.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/camera2/portability/src/com/android/ex/camera2/portability/CameraCapabilities.java b/camera2/portability/src/com/android/ex/camera2/portability/CameraCapabilities.java index 9b7ca6e..1f2781b 100644 --- a/camera2/portability/src/com/android/ex/camera2/portability/CameraCapabilities.java +++ b/camera2/portability/src/com/android/ex/camera2/portability/CameraCapabilities.java @@ -485,6 +485,8 @@ public class CameraCapabilities { mMaxNumOfFacesSupported = src.mMaxNumOfFacesSupported; mMaxNumOfFocusAreas = src.mMaxNumOfFocusAreas; mMaxNumOfMeteringArea = src.mMaxNumOfMeteringArea; + mMaxZoomIndex = src.mMaxZoomIndex; + mZoomRatioList.addAll(src.mZoomRatioList); mMaxZoomRatio = src.mMaxZoomRatio; mHorizontalViewAngle = src.mHorizontalViewAngle; mVerticalViewAngle = src.mVerticalViewAngle; -- cgit v1.2.3 From e12fd4abbad22f83b6a6d5f2fa391ca56849563c Mon Sep 17 00:00:00 2001 From: Sol Boucher Date: Fri, 22 Aug 2014 10:33:44 -0700 Subject: camera2-portability: Play shutter sound for camera2 captures Bug: 17109582 Change-Id: I73321cdbb2972b2d1e9bc2de93192fbb506347e7 --- .../com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java index e675796..d139c62 100644 --- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java +++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java @@ -35,6 +35,7 @@ import android.hardware.camera2.TotalCaptureResult; import android.hardware.camera2.params.MeteringRectangle; import android.media.Image; import android.media.ImageReader; +import android.media.MediaActionSound; import android.os.Build; import android.os.Handler; import android.os.HandlerThread; @@ -63,6 +64,7 @@ class AndroidCamera2AgentImpl extends CameraAgent { private final CameraStateHolder mCameraState; private final DispatchThread mDispatchThread; private final CameraManager mCameraManager; + private final MediaActionSound mNoisemaker; /** * Number of camera devices. The length of {@code mCameraDevices} does not reveal this @@ -88,6 +90,8 @@ class AndroidCamera2AgentImpl extends CameraAgent { mDispatchThread = new DispatchThread(mCameraHandler, mCameraHandlerThread); mDispatchThread.start(); mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE); + mNoisemaker = new MediaActionSound(); + mNoisemaker.load(MediaActionSound.SHUTTER_CLICK); mNumCameraDevices = 0; mCameraDevices = new ArrayList(); @@ -915,7 +919,6 @@ class AndroidCamera2AgentImpl extends CameraAgent { }}); } - // TODO: Implement @Override public void takePicture(final Handler handler, final CameraShutterCallback shutter, @@ -932,6 +935,7 @@ class AndroidCamera2AgentImpl extends CameraAgent { handler.post(new Runnable() { @Override public void run() { + mNoisemaker.play(MediaActionSound.SHUTTER_CLICK); shutter.onShutter(AndroidCamera2ProxyImpl.this); }}); } -- cgit v1.2.3 From fbd0084b89fe1c3b7be014d13b15b20a08ed583a Mon Sep 17 00:00:00 2001 From: Sol Boucher Date: Wed, 27 Aug 2014 14:07:41 -0700 Subject: camera2-portability: Fix camera2 takePicture AE regression This fixes a regression introduced by 984a086412a94ebea1bd9af8cd8bbf4afab38034 that resulted in captures sometimes hanging until the AE state changed. It includes explanatory comments to guard against this sort of error in the future. Bug: 17302778 Change-Id: I668f5a5470a0ae7712f62c7574d18360d47e410b --- .../android/ex/camera2/portability/AndroidCamera2AgentImpl.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java index 44f19bc..c4eea50 100644 --- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java +++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java @@ -854,6 +854,9 @@ class AndroidCamera2AgentImpl extends CameraAgent { case CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED: case CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED: { + // This check must be made regardless of whether the focus state has + // changed recently to avoid infinite waiting during autoFocus() + // when the algorithm has already either converged or failed to. if (mOneshotAfCallback != null) { // A call to autoFocus() was just made to request a focus lock. // Notify the caller that the lens is now indefinitely fixed, @@ -876,8 +879,7 @@ class AndroidCamera2AgentImpl extends CameraAgent { // might get the final callbacks for an earlier frame after receiving one or // more that correspond to the next one. To prevent our data from oscillating, // we never consider AE states that are older than the last one we've seen. - if (aeState != mCurrentAeState && - result.getFrameNumber() > mLastAeFrameNumber) { + if (result.getFrameNumber() > mLastAeFrameNumber) { mCurrentAeState = aeStateMaybe; mLastAeFrameNumber = result.getFrameNumber(); @@ -885,6 +887,9 @@ class AndroidCamera2AgentImpl extends CameraAgent { case CaptureResult.CONTROL_AE_STATE_CONVERGED: case CaptureResult.CONTROL_AE_STATE_FLASH_REQUIRED: case CaptureResult.CONTROL_AE_STATE_LOCKED: { + // This check must be made regardless of whether the exposure state + // has changed recently to avoid infinite waiting during + // takePicture() when the algorithm has already converged. if (mOneshotCaptureCallback != null) { // A call to takePicture() was just made, and autoexposure // converged so it's time to initiate the capture! -- cgit v1.2.3