Add CameraListener#onMediaRecorderChanged(…) callback

pull/225/head
Andrew Carlson 7 years ago
parent 819638862f
commit e7efec188f
  1. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java
  2. 12
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraListener.java
  3. 15
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java

@ -630,6 +630,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera
try { try {
mMediaRecorder.prepare(); mMediaRecorder.prepare();
mMediaRecorder.start(); mMediaRecorder.start();
mCameraCallbacks.dispatchOnMediaRecorderChanged(mMediaRecorder);
} catch (Exception e) { } catch (Exception e) {
LOG.e("Error while starting MediaRecorder. Swallowing.", e); LOG.e("Error while starting MediaRecorder. Swallowing.", e);
mVideoFile = null; mVideoFile = null;
@ -658,6 +659,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera
LOG.i("endVideoImmediately:", "is capturing:", mIsCapturingVideo); LOG.i("endVideoImmediately:", "is capturing:", mIsCapturingVideo);
mIsCapturingVideo = false; mIsCapturingVideo = false;
if (mMediaRecorder != null) { if (mMediaRecorder != null) {
mCameraCallbacks.dispatchOnMediaRecorderChanged(null);
try { try {
mMediaRecorder.stop(); mMediaRecorder.stop();
} catch (Exception e) { } catch (Exception e) {

@ -1,7 +1,9 @@
package com.otaliastudios.cameraview; package com.otaliastudios.cameraview;
import android.graphics.PointF; import android.graphics.PointF;
import android.media.MediaRecorder;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread; import android.support.annotation.UiThread;
import java.io.File; 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) {
}
} }

@ -14,6 +14,7 @@ import android.graphics.Rect;
import android.graphics.YuvImage; import android.graphics.YuvImage;
import android.location.Location; import android.location.Location;
import android.media.MediaActionSound; import android.media.MediaActionSound;
import android.media.MediaRecorder;
import android.os.Build; import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
@ -1475,6 +1476,7 @@ public class CameraView extends FrameLayout {
void dispatchOnFocusEnd(@Nullable Gesture trigger, boolean success, PointF where); void dispatchOnFocusEnd(@Nullable Gesture trigger, boolean success, PointF where);
void dispatchOnZoomChanged(final float newValue, final PointF[] fingers); void dispatchOnZoomChanged(final float newValue, final PointF[] fingers);
void dispatchOnExposureCorrectionChanged(float newValue, float[] bounds, PointF[] fingers); void dispatchOnExposureCorrectionChanged(float newValue, float[] bounds, PointF[] fingers);
void dispatchOnMediaRecorderChanged(@Nullable MediaRecorder mediaRecorder);
void dispatchFrame(Frame frame); void dispatchFrame(Frame frame);
void dispatchError(CameraException exception); 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 //endregion

Loading…
Cancel
Save