Skip to content

Commit d894911

Browse files
Implement Shutter callback. Add GestureAction.TAKE_PICTURE_SNAPSHOT. (#1030)
* include swipe and shutter callback * Swipe Left and Right callback on CameraListener. * Shutter event callback on CameraListener. * Add Gesture Action TakePictureSnapshot Added a new GestureAction.TAKE_PICTURE_SNAPSHOT that calls takePictureSnapshot() method. * take_picture_snapshot GestureAction
1 parent 5d10277 commit d894911

File tree

4 files changed

+48
-17
lines changed

4 files changed

+48
-17
lines changed

cameraview/src/main/java/com/otaliastudios/cameraview/CameraListener.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,4 +161,12 @@ public void onVideoRecordingEnd() {
161161

162162
}
163163

164-
}
164+
/**
165+
* Notifies that the shutter event is happening. You can update UI to show some
166+
* trigger effect, so user visually confirms that picture is being taken
167+
* or video recording is about to start.
168+
*/
169+
@UiThread
170+
public void onShutter() {}
171+
172+
}

cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,10 @@ private void onGesture(@NonNull GestureFinder source, @NonNull CameraOptions opt
669669
//noinspection ConstantConditions
670670
switch (action) {
671671

672+
case TAKE_PICTURE_SNAPSHOT:
673+
takePictureSnapshot();
674+
break;
675+
672676
case TAKE_PICTURE:
673677
takePicture();
674678
break;
@@ -2228,6 +2232,14 @@ public void onShutter(boolean shouldPlaySound) {
22282232
if (shouldPlaySound && mPlaySounds) {
22292233
playSound(MediaActionSound.SHUTTER_CLICK);
22302234
}
2235+
mUiHandler.post(new Runnable() {
2236+
@Override
2237+
public void run() {
2238+
for (CameraListener listener : mListeners) {
2239+
listener.onShutter();
2240+
}
2241+
}
2242+
});
22312243
}
22322244

22332245
@Override

cameraview/src/main/java/com/otaliastudios/cameraview/gesture/GestureAction.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ public enum GestureAction {
4343
*/
4444
TAKE_PICTURE(2, GestureType.ONE_SHOT),
4545

46+
/**
47+
* When triggered, this action will fire a picture snapshot.
48+
* This action can be mapped to one shot gestures:
49+
*
50+
* - {@link Gesture#TAP}
51+
* - {@link Gesture#LONG_TAP}
52+
*/
53+
TAKE_PICTURE_SNAPSHOT(3, GestureType.ONE_SHOT),
54+
4655
/**
4756
* Zoom control, typically assigned to the pinch gesture.
4857
* This action can be mapped to continuous gestures:
@@ -51,7 +60,7 @@ public enum GestureAction {
5160
* - {@link Gesture#SCROLL_HORIZONTAL}
5261
* - {@link Gesture#SCROLL_VERTICAL}
5362
*/
54-
ZOOM(3, GestureType.CONTINUOUS),
63+
ZOOM(4, GestureType.CONTINUOUS),
5564

5665
/**
5766
* Exposure correction control.
@@ -61,7 +70,7 @@ public enum GestureAction {
6170
* - {@link Gesture#SCROLL_HORIZONTAL}
6271
* - {@link Gesture#SCROLL_VERTICAL}
6372
*/
64-
EXPOSURE_CORRECTION(4, GestureType.CONTINUOUS),
73+
EXPOSURE_CORRECTION(5, GestureType.CONTINUOUS),
6574

6675
/**
6776
* Controls the first parameter of a real-time {@link Filter},
@@ -71,7 +80,7 @@ public enum GestureAction {
7180
* - {@link Gesture#SCROLL_HORIZONTAL}
7281
* - {@link Gesture#SCROLL_VERTICAL}
7382
*/
74-
FILTER_CONTROL_1(5, GestureType.CONTINUOUS),
83+
FILTER_CONTROL_1(6, GestureType.CONTINUOUS),
7584

7685
/**
7786
* Controls the second parameter of a real-time {@link Filter},
@@ -81,7 +90,7 @@ public enum GestureAction {
8190
* - {@link Gesture#SCROLL_HORIZONTAL}
8291
* - {@link Gesture#SCROLL_VERTICAL}
8392
*/
84-
FILTER_CONTROL_2(6, GestureType.CONTINUOUS);
93+
FILTER_CONTROL_2(7, GestureType.CONTINUOUS);
8594

8695
final static GestureAction DEFAULT_PINCH = NONE;
8796
final static GestureAction DEFAULT_TAP = NONE;

cameraview/src/main/res/values/attrs.xml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,36 +40,38 @@
4040
<enum name="none" value="0" />
4141
<enum name="autoFocus" value="1" />
4242
<enum name="takePicture" value="2" />
43+
<enum name="takePictureSnapshot" value="3" />
4344
</attr>
4445

4546
<attr name="cameraGestureLongTap" format="enum">
4647
<enum name="none" value="0" />
4748
<enum name="autoFocus" value="1" />
4849
<enum name="takePicture" value="2" />
50+
<enum name="takePictureSnapshot" value="3" />
4951
</attr>
5052

5153
<attr name="cameraGesturePinch" format="enum">
5254
<enum name="none" value="0" />
53-
<enum name="zoom" value="3" />
54-
<enum name="exposureCorrection" value="4" />
55-
<enum name="filterControl1" value="5" />
56-
<enum name="filterControl2" value="6" />
55+
<enum name="zoom" value="4" />
56+
<enum name="exposureCorrection" value="5" />
57+
<enum name="filterControl1" value="6" />
58+
<enum name="filterControl2" value="7" />
5759
</attr>
5860

5961
<attr name="cameraGestureScrollHorizontal" format="enum">
6062
<enum name="none" value="0" />
61-
<enum name="zoom" value="3" />
62-
<enum name="exposureCorrection" value="4" />
63-
<enum name="filterControl1" value="5" />
64-
<enum name="filterControl2" value="6" />
63+
<enum name="zoom" value="4" />
64+
<enum name="exposureCorrection" value="5" />
65+
<enum name="filterControl1" value="6" />
66+
<enum name="filterControl2" value="7" />
6567
</attr>
6668

6769
<attr name="cameraGestureScrollVertical" format="enum">
6870
<enum name="none" value="0" />
69-
<enum name="zoom" value="3" />
70-
<enum name="exposureCorrection" value="4" />
71-
<enum name="filterControl1" value="5" />
72-
<enum name="filterControl2" value="6" />
71+
<enum name="zoom" value="4" />
72+
<enum name="exposureCorrection" value="5" />
73+
<enum name="filterControl1" value="6" />
74+
<enum name="filterControl2" value="7" />
7375
</attr>
7476

7577
<attr name="cameraEngine" format="enum">

0 commit comments

Comments
 (0)