CameraView listen to lots of different gestures inside its bounds. You have the chance to map these gestures to particular actions or camera controls, using the mapGesture() method. This lets you emulate typical behaviors in a single line:

cameraView.mapGesture(Gesture.PINCH, GestureAction.ZOOM); // Pinch to zoom!
cameraView.mapGesture(Gesture.TAP, GestureAction.AUTO_FOCUS); // Tap to focus!
cameraView.mapGesture(Gesture.LONG_TAP, GestureAction.TAKE_PICTURE); // Long tap to shoot!

Simple as that. There are two things to be noted:

  • Not every mapping is valid. For example, you can’t control zoom with long taps, or start focusing by pinching.
  • Some actions might not be supported by the sensor. Check out CameraOptions to know what’s legit and what’s not.
Gesture Description Can be mapped to
PINCH Pinch gesture, typically assigned to the zoom control. ZOOM EXPOSURE_CORRECTION FILTER_CONTROL_1 FILTER_CONTROL_2 NONE
TAP Single tap gesture, typically assigned to the focus control. AUTO_FOCUS TAKE_PICTURE NONE
LONG_TAP Long tap gesture. AUTO_FOCUS TAKE_PICTURE NONE
SCROLL_HORIZONTAL Horizontal movement gesture. ZOOM EXPOSURE_CORRECTION FILTER_CONTROL_1 FILTER_CONTROL_2 NONE
SCROLL_VERTICAL Vertical movement gesture. ZOOM EXPOSURE_CORRECTION FILTER_CONTROL_1 FILTER_CONTROL_2 NONE

Gesture Actions

Looking at this from the other side:

Gesture action Description Can be mapped to
NONE Disables this gesture. TAP LONG_TAP PINCH SCROLL_HORIZONTAL SCROLL_VERTICAL
AUTO_FOCUS Launches an auto-focus operation on the finger position. TAP LONG_TAP
TAKE_PICTURE Takes a picture using takePicture. TAP LONG_TAP
ZOOM Zooms in or out. PINCH SCROLL_HORIZONTAL SCROLL_VERTICAL
EXPOSURE_CORRECTION Controls the exposure correction. PINCH SCROLL_HORIZONTAL SCROLL_VERTICAL
FILTER_CONTROL_1 Controls the first parameter (if any) of a real-time filter. PINCH SCROLL_HORIZONTAL SCROLL_VERTICAL
FILTER_CONTROL_2 Controls the second parameter (if any) of a real-time filter. PINCH SCROLL_HORIZONTAL SCROLL_VERTICAL

XML Attributes

<com.otaliastudios.cameraview.CameraView
    app:cameraGesturePinch="zoom|exposureCorrection|filterControl1|filterControl2|none"
    app:cameraGestureTap="autoFocus|takePicture|none"
    app:cameraGestureLongTap="autoFocus|takePicture|none"
    app:cameraGestureScrollHorizontal="zoom|exposureCorrection|filterControl1|filterControl2|none"
    app:cameraGestureScrollVertical="zoom|exposureCorrection|filterControl1|filterControl2|none"/>
Method Description
mapGesture(Gesture, GestureAction) Maps a certain gesture to a certain action. No-op if the action is not supported.
getGestureAction(Gesture) Returns the action currently mapped to the given gesture.
clearGesture(Gesture) Clears any action mapped to the given gesture.