diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java index 6ff4347a..6afe1ac1 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java @@ -630,6 +630,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera try { mMediaRecorder.prepare(); mMediaRecorder.start(); + mCameraCallbacks.dispatchOnMediaRecorderChanged(mMediaRecorder); } catch (Exception e) { LOG.e("Error while starting MediaRecorder. Swallowing.", e); mVideoFile = null; @@ -658,6 +659,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera LOG.i("endVideoImmediately:", "is capturing:", mIsCapturingVideo); mIsCapturingVideo = false; if (mMediaRecorder != null) { + mCameraCallbacks.dispatchOnMediaRecorderChanged(null); try { mMediaRecorder.stop(); } catch (Exception e) { diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraListener.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraListener.java index 16927500..5141c0c8 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraListener.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraListener.java @@ -1,7 +1,9 @@ package com.otaliastudios.cameraview; import android.graphics.PointF; +import android.media.MediaRecorder; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.annotation.UiThread; import java.io.File; @@ -151,4 +153,14 @@ public abstract class CameraListener { } + /** + * Notifies that a new MediaRecorder is in use or a previous one has been + * released. + * + * @param mediaRecorder A new MediaRecorder or null + */ + @UiThread + public void onMediaRecorderChanged(@Nullable MediaRecorder mediaRecorder) { + + } } \ No newline at end of file diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index da30b4f5..fe0b2671 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -14,6 +14,7 @@ import android.graphics.Rect; import android.graphics.YuvImage; import android.location.Location; import android.media.MediaActionSound; +import android.media.MediaRecorder; import android.os.Build; import android.os.Handler; import android.os.Looper; @@ -1475,6 +1476,7 @@ public class CameraView extends FrameLayout { void dispatchOnFocusEnd(@Nullable Gesture trigger, boolean success, PointF where); void dispatchOnZoomChanged(final float newValue, final PointF[] fingers); void dispatchOnExposureCorrectionChanged(float newValue, float[] bounds, PointF[] fingers); + void dispatchOnMediaRecorderChanged(@Nullable MediaRecorder mediaRecorder); void dispatchFrame(Frame frame); void dispatchError(CameraException exception); } @@ -1738,6 +1740,19 @@ public class CameraView extends FrameLayout { } }); } + + @Override + public void dispatchOnMediaRecorderChanged(@Nullable final MediaRecorder mediaRecorder) { + mLogger.i("dispatchOnMediaRecorderChanged"); + mUiHandler.post(new Runnable() { + @Override + public void run() { + for (CameraListener listener : mListeners) { + listener.onMediaRecorderChanged(mediaRecorder); + } + } + }); + } } //endregion