0

How do I implement pinch zoom In and Out feature in Android?

I have the below code but I am getting an error ,

java.lang.NullPointerException: Attempt to invoke virtual method

'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference at com.roadlike.app.Camera.CameraImageMain.onTouchEvent

Below in my code:

@Override
public boolean onTouchEvent(MotionEvent event) {
    Camera.Parameters params = mCamera.getParameters();
    int action = event.getAction();

    if (event.getPointerCount() > 1) {
        // handle multi-touch events
        if (action == MotionEvent.ACTION_POINTER_DOWN) {
            mDist = getFingerSpacing(event);
        } else if (action == MotionEvent.ACTION_MOVE
                && params.isZoomSupported()) {
            mCamera.cancelAutoFocus();
            handleZoom(event, params);
        }
    } else {
        // handle single touch events
        if (action == MotionEvent.ACTION_UP) {
            handleFocus(event, params);
        }
    }
    return true;
}

private void handleZoom(MotionEvent event, Camera.Parameters params) {
    int maxZoom = params.getMaxZoom();
    int zoom = params.getZoom();
    float newDist = getFingerSpacing(event);
    if (newDist > mDist) {
        // zoom in
        if (zoom < maxZoom)
            zoom++;
    } else if (newDist < mDist) {
        // zoom out
        if (zoom > 0)
            zoom--;
    }
    mDist = newDist;
    params.setZoom(zoom);
    mCamera.setParameters(params);
}

public void handleFocus(MotionEvent event, Camera.Parameters params) {
    int pointerId = event.getPointerId(0);
    int pointerIndex = event.findPointerIndex(pointerId);
    // Get the pointer's current position
    float x = event.getX(pointerIndex);
    float y = event.getY(pointerIndex);

    List<String> supportedFocusModes = params.getSupportedFocusModes();
    if (supportedFocusModes != null
            && supportedFocusModes
            .contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
        mCamera.autoFocus(new Camera.AutoFocusCallback() {
            @Override
            public void onAutoFocus(boolean b, Camera camera) {
            }
        });
    }

How to fix the error to achieve the pinch zoom effect?

Cœur
  • 37,241
  • 25
  • 195
  • 267
Abhishek D
  • 465
  • 2
  • 9
  • 24
  • 1
    I can see your error above, error shows that: `mCamera.getParameters()` with `mCamera` is null. You can check your `mCamera` – RoShan Shan Jun 06 '18 at 08:12
  • 1
    Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – E.Abdel Jun 06 '18 at 08:14

0 Answers0