feat(android): Added pause and resume recording (#2911)
* Added pause and resume recording functionality for android version 24 onwards * Added pause and resume recording functions to Camera1.java Co-authored-by: Pradeep Asundi <pradeep@asundi.in>
This commit is contained in:
parent
951fcbd397
commit
360a5b0ce2
@ -852,6 +852,16 @@ class Camera1 extends CameraViewImpl implements MediaRecorder.OnInfoListener,
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
void pauseRecording() {
|
||||
pauseMediaRecorder();
|
||||
}
|
||||
|
||||
@Override
|
||||
void resumeRecording() {
|
||||
resumeMediaRecorder();
|
||||
}
|
||||
|
||||
@Override
|
||||
int getCameraOrientation() {
|
||||
return mCameraInfo.orientation;
|
||||
@ -1569,6 +1579,18 @@ class Camera1 extends CameraViewImpl implements MediaRecorder.OnInfoListener,
|
||||
}
|
||||
}
|
||||
|
||||
private void pauseMediaRecorder() {
|
||||
if (Build.VERSION.SDK_INT >= 24) {
|
||||
mMediaRecorder.pause();
|
||||
}
|
||||
}
|
||||
|
||||
private void resumeMediaRecorder() {
|
||||
if (Build.VERSION.SDK_INT >= 24) {
|
||||
mMediaRecorder.resume();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList<int[]> getSupportedPreviewFpsRange() {
|
||||
return (ArrayList<int[]>) mCameraParameters.getSupportedPreviewFpsRange();
|
||||
|
||||
@ -44,6 +44,7 @@ import android.util.SparseIntArray;
|
||||
import android.view.Surface;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.Build;
|
||||
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
|
||||
@ -619,6 +620,16 @@ class Camera2 extends CameraViewImpl implements MediaRecorder.OnInfoListener, Me
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
void pauseRecording() {
|
||||
pauseMediaRecorder();
|
||||
}
|
||||
|
||||
@Override
|
||||
void resumeRecording() {
|
||||
resumeMediaRecorder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFocusDepth(float value) {
|
||||
if (mFocusDepth == value) {
|
||||
@ -1428,6 +1439,18 @@ class Camera2 extends CameraViewImpl implements MediaRecorder.OnInfoListener, Me
|
||||
mVideoPath = null;
|
||||
}
|
||||
|
||||
private void pauseMediaRecorder() {
|
||||
if (Build.VERSION.SDK_INT >= 24) {
|
||||
mMediaRecorder.pause();
|
||||
}
|
||||
}
|
||||
|
||||
private void resumeMediaRecorder() {
|
||||
if (Build.VERSION.SDK_INT >= 24) {
|
||||
mMediaRecorder.resume();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unlocks the auto-focus and restart camera preview. This is supposed to be called after
|
||||
* capturing a still picture.
|
||||
|
||||
@ -635,6 +635,14 @@ public class CameraView extends FrameLayout {
|
||||
mImpl.stopRecording();
|
||||
}
|
||||
|
||||
public void pauseRecording() {
|
||||
mImpl.pauseRecording();
|
||||
}
|
||||
|
||||
public void resumeRecording() {
|
||||
mImpl.resumeRecording();
|
||||
}
|
||||
|
||||
public void resumePreview() {
|
||||
mImpl.resumePreview();
|
||||
}
|
||||
|
||||
@ -105,6 +105,10 @@ abstract class CameraViewImpl {
|
||||
|
||||
abstract void stopRecording();
|
||||
|
||||
abstract void pauseRecording();
|
||||
|
||||
abstract void resumeRecording();
|
||||
|
||||
abstract int getCameraOrientation();
|
||||
|
||||
abstract void setDisplayOrientation(int displayOrientation);
|
||||
|
||||
@ -324,6 +324,48 @@ public class CameraModule extends ReactContextBaseJavaModule {
|
||||
});
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void pauseRecording(final int viewTag) {
|
||||
final ReactApplicationContext context = getReactApplicationContext();
|
||||
UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
|
||||
uiManager.addUIBlock(new UIBlock() {
|
||||
@Override
|
||||
public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
|
||||
final RNCameraView cameraView;
|
||||
|
||||
try {
|
||||
cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
|
||||
if (cameraView.isCameraOpened()) {
|
||||
cameraView.pauseRecording();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void resumeRecording(final int viewTag) {
|
||||
final ReactApplicationContext context = getReactApplicationContext();
|
||||
UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class);
|
||||
uiManager.addUIBlock(new UIBlock() {
|
||||
@Override
|
||||
public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
|
||||
final RNCameraView cameraView;
|
||||
|
||||
try {
|
||||
cameraView = (RNCameraView) nativeViewHierarchyManager.resolveView(viewTag);
|
||||
if (cameraView.isCameraOpened()) {
|
||||
cameraView.resumeRecording();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void getSupportedRatios(final int viewTag, final Promise promise) {
|
||||
final ReactApplicationContext context = getReactApplicationContext();
|
||||
|
||||
@ -624,6 +624,14 @@ export default class Camera extends React.Component<PropsType, StateType> {
|
||||
CameraManager.stopRecording(this._cameraHandle);
|
||||
}
|
||||
|
||||
pauseRecording() {
|
||||
CameraManager.pauseRecording(this._cameraHandle);
|
||||
}
|
||||
|
||||
resumeRecording() {
|
||||
CameraManager.resumeRecording(this._cameraHandle);
|
||||
}
|
||||
|
||||
pausePreview() {
|
||||
CameraManager.pausePreview(this._cameraHandle);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user