diff options
author | Byunghun Jeon <bjeon@codeaurora.org> | 2016-03-09 15:14:18 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-08-25 21:55:20 -0700 |
commit | 7ed01dab6670828bd4005a525eef03ed7a19b97f (patch) | |
tree | 74807ae450c5f71de530d2931fc59d7f2ece365f /src/com/android/camera/CaptureUI.java | |
parent | e9e91c3ff2b4e7e8c4b0932d8559a2a99610a8b7 (diff) | |
download | android_packages_apps_Snap-7ed01dab6670828bd4005a525eef03ed7a19b97f.tar.gz android_packages_apps_Snap-7ed01dab6670828bd4005a525eef03ed7a19b97f.tar.bz2 android_packages_apps_Snap-7ed01dab6670828bd4005a525eef03ed7a19b97f.zip |
SnapdragonCamera: Camera2 add zoom support
Add zoom support to Camera2
CRs-Fixed: 989750
Change-Id: Id6b558ff5215f04ca7c201b1d1807521d615c353
Diffstat (limited to 'src/com/android/camera/CaptureUI.java')
-rw-r--r-- | src/com/android/camera/CaptureUI.java | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java index ed1020732..01b66fb70 100644 --- a/src/com/android/camera/CaptureUI.java +++ b/src/com/android/camera/CaptureUI.java @@ -24,8 +24,8 @@ import android.graphics.Matrix; import android.graphics.Point; import android.graphics.RectF; import android.graphics.drawable.AnimationDrawable; -import android.hardware.Camera; import android.hardware.Camera.Face; +import android.hardware.camera2.CameraCharacteristics; import android.util.Log; import android.view.Gravity; import android.view.MotionEvent; @@ -111,8 +111,6 @@ public class CaptureUI implements PieListener, private OnScreenIndicators mOnScreenIndicators; private PieRenderer mPieRenderer; private ZoomRenderer mZoomRenderer; - private int mZoomMax; - private List<Integer> mZoomRatios; private int mPreviewWidth = 0; private int mPreviewHeight = 0; private int mOriginalPreviewWidth = 0; @@ -280,7 +278,9 @@ public class CaptureUI implements PieListener, mRootView.findViewById(R.id.on_screen_indicators)); } - public void onCameraOpened(PreferenceGroup prefGroup, OnPreferenceChangedListener listener) { + public void onCameraOpened(CameraCharacteristics[] characteristics, + List<Integer> characteristicsIndex, PreferenceGroup prefGroup, + OnPreferenceChangedListener listener) { if (mMenu == null) { mMenu = new CaptureMenu(mActivity, this); mMenu.setListener(listener); @@ -300,8 +300,11 @@ public class CaptureUI implements PieListener, } mGestures.setCaptureMenu(mMenu); + mGestures.setZoomEnabled(CameraUtil.isZoomSupported(characteristics, characteristicsIndex)); mGestures.setRenderOverlay(mRenderOverlay); mRenderOverlay.requestLayout(); + + initializeZoom(characteristics, characteristicsIndex); mActivity.setPreviewGestures(mGestures); } @@ -364,17 +367,19 @@ public class CaptureUI implements PieListener, frameAnimation.start(); } - public void initializeZoom(Camera.Parameters params) { - if ((params == null) || !params.isZoomSupported() - || (mZoomRenderer == null)) return; - mZoomMax = params.getMaxZoom(); - mZoomRatios = params.getZoomRatios(); - // Currently we use immediate zoom for fast zooming to get better UX and - // there is no plan to take advantage of the smooth zoom. + public void initializeZoom(CameraCharacteristics[] characteristics, + List<Integer> characteristicsIndex) { + if ((characteristics == null) || !CameraUtil.isZoomSupported(characteristics, + characteristicsIndex) || (mZoomRenderer == null)) + return; if (mZoomRenderer != null) { - mZoomRenderer.setZoomMax(mZoomMax); - mZoomRenderer.setZoom(params.getZoom()); - mZoomRenderer.setZoomValue(mZoomRatios.get(params.getZoom())); + float zoomMax = Float.MAX_VALUE; + for (int i = 0; i < characteristicsIndex.size(); i++) { + zoomMax = Math.min(characteristics[characteristicsIndex.get(i)].get + (CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM), zoomMax); + } + mZoomRenderer.setZoomMax(zoomMax); + mZoomRenderer.setZoom(1f); mZoomRenderer.setOnZoomChangeListener(new ZoomChangeListener()); } } @@ -781,10 +786,10 @@ public class CaptureUI implements PieListener, private class ZoomChangeListener implements ZoomRenderer.OnZoomChangedListener { @Override - public void onZoomValueChanged(int index) { - int newZoom = mController.onZoomChanged(index); + public void onZoomValueChanged(float mZoomValue) { + mController.onZoomChanged(mZoomValue); if (mZoomRenderer != null) { - mZoomRenderer.setZoomValue(mZoomRatios.get(newZoom)); + mZoomRenderer.setZoom(mZoomValue); } } @@ -802,6 +807,11 @@ public class CaptureUI implements PieListener, mPieRenderer.setBlockFocus(false); } } + + @Override + public void onZoomValueChanged(int index) { + + } } } |