Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9691d548 authored by Su Liu's avatar Su Liu Committed by Steve Kondik
Browse files

Camera: Change volume hard key button to zoom function

Able to capture image through volume hard key
button in camera application, change the function
to zoom function.

Change-Id: Iab9fc2492b2e2ff89cd58c21bac2f147f47b77e2
parent 4a1837d2
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -1633,7 +1633,17 @@ public class PhotoModule
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            if (mActivity.isInCameraApp() && mFirstTimeInitialized
                && (mUI.mMenuInitialized)) {
                mUI.onScaleStepResize(true);
            }
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            if (mActivity.isInCameraApp() && mFirstTimeInitialized
                && (mUI.mMenuInitialized)) {
                mUI.onScaleStepResize(false);
            }
            return true;
        case KeyEvent.KEYCODE_FOCUS:
            if (mActivity.isInCameraApp() && mFirstTimeInitialized &&
                  mShutterButton.getVisibility() == View.VISIBLE) {
@@ -1671,12 +1681,7 @@ public class PhotoModule
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            if (mActivity.isInCameraApp() && mFirstTimeInitialized &&
                  mShutterButton.getVisibility() == View.VISIBLE) {
                onShutterButtonClick();
            return true;
            }
            return false;
        case KeyEvent.KEYCODE_FOCUS:
            if (mFirstTimeInitialized) {
                onShutterButtonFocus(false);
+17 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.view.ViewStub;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.Toast;
import android.graphics.Canvas;

import com.android.camera.CameraPreference.OnPreferenceChangedListener;
import com.android.camera.FocusOverlayManager.FocusUI;
@@ -692,6 +693,22 @@ public class PhotoUI implements PieListener,
        mFaceView.setFaces(faces);
    }


    public boolean onScaleStepResize(boolean direction)
    {
        if(mGestures != null){
            return mGestures.onScaleStepResize(direction);
        }
        return false;
    }

    public void onScaleChangeDraw(Canvas canvas)
    {
        if(mGestures != null){
            mGestures.onScaleChangeDraw(canvas);
        }
    }

    @Override
    public void onSwipe(int direction) {
        if (direction == PreviewGestures.DIR_UP) {
+16 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
import android.view.ViewConfiguration;
import android.graphics.Canvas;

import com.android.camera.ui.PieRenderer;
import com.android.camera.ui.RenderOverlay;
@@ -385,4 +386,19 @@ public class PreviewGestures
            mZoom.onScaleEnd(detector);
        }
    }

    public boolean onScaleStepResize(boolean direction)
    {
        if(mZoom != null){
            return mZoom.onScaleStepResize(direction);
        }
        return false;
    }

    public void onScaleChangeDraw(Canvas canvas)
    {
        if(mZoom != null){
            mZoom.onScaleChangeDraw(canvas);
        }
    }
}
+36 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ public class ZoomRenderer extends OverlayRenderer
    private int mZoomSig;
    private int mZoomFraction;
    private Rect mTextBounds;
    private Canvas mCanvas;

    public interface OnZoomChangedListener {
        void onZoomStart();
@@ -109,6 +110,7 @@ public class ZoomRenderer extends OverlayRenderer

    @Override
    public void onDraw(Canvas canvas) {
        mCanvas = canvas;
        mPaint.setStrokeWidth(mInnerStroke);
        canvas.drawCircle(mCenterX, mCenterY, mMinCircle, mPaint);
        canvas.drawCircle(mCenterX, mCenterY, mMaxCircle, mPaint);
@@ -123,6 +125,13 @@ public class ZoomRenderer extends OverlayRenderer
                mTextPaint);
    }

     public void onScaleChangeDraw(Canvas canvas) {
        if(mCanvas != null){
            onDraw(mCanvas);
        }
    }


    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        final float sf = detector.getScaleFactor();
@@ -137,6 +146,33 @@ public class ZoomRenderer extends OverlayRenderer
        return true;
    }

    public boolean onScaleStepResize(boolean direction) {
        int zoom;
        float circle;
        float circleStep = (mMaxCircle - mMinCircle)/10;
        if(direction){
            circle = (int) (mCircleSize + circleStep);
        } else {
            circle = (int) (mCircleSize - circleStep);
        }
        circle = Math.max(mMinCircle, circle);
        circle = Math.min(mMaxCircle, circle);
        if (mListener != null && (int) circle != mCircleSize
            && ((mMaxCircle - mMinCircle) != 0)) {
            mCircleSize = (int) circle;
            zoom = mMinZoom + (int) ((mCircleSize - mMinCircle)
                   * (mMaxZoom - mMinZoom) / (mMaxCircle - mMinCircle));
            if (mListener != null) {
                mListener.onZoomStart();
                mListener.onZoomValueChanged(zoom);
                mListener.onZoomEnd();
            }
            return true;
        } else {
            return false;
        }
    }

    @Override
    public boolean onScaleBegin(ScaleGestureDetector detector) {
        setVisible(true);