Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
parveshneedhoo committed Apr 5, 2024
1 parent 9705d29 commit df81319
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 72 deletions.
105 changes: 38 additions & 67 deletions src/android/CameraPreviewFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -136,38 +136,7 @@ public void startCamera() {
startCameraCallback.onCameraStarted(new Exception("Unable to start camera"));
return;
}
CameraSelector cameraSelector = getCameraSelector(captureDevice);

Size targetResolution = null;
if (targetSize > 0) {
targetResolution = CameraPreviewFragment.calculateResolution(getContext(), targetSize);
}

preview = new Preview.Builder().build();
imageCapture = new ImageCapture.Builder()
.setTargetResolution(targetResolution)
.build();

cameraProvider.unbindAll();
try {
camera = cameraProvider.bindToLifecycle(
this,
cameraSelector,
preview,
imageCapture
);
} catch (IllegalArgumentException e) {
// Error with result in capturing image with default resolution
e.printStackTrace();
imageCapture = new ImageCapture.Builder()
.build();
camera = cameraProvider.bindToLifecycle(
this,
cameraSelector,
preview,
imageCapture
);
}
setUpCamera(captureDevice,cameraProvider);

preview.setSurfaceProvider(viewFinder.getSurfaceProvider());

Expand Down Expand Up @@ -385,48 +354,18 @@ public void switchCameraTo(String device, CameraSwitchedCallback cameraSwitchedC
return;
}

CameraSelector cameraSelector = getCameraSelector(device);

Size targetResolution = null;
if (targetSize > 0) {
targetResolution = CameraPreviewFragment.calculateResolution(getContext(), targetSize);
}

preview = new Preview.Builder().build();
imageCapture = new ImageCapture.Builder()
.setTargetResolution(targetResolution)
.build();

cameraProvider.unbindAll();
try {
camera = cameraProvider.bindToLifecycle(
getActivity(),
cameraSelector,
preview,
imageCapture
);
} catch (IllegalArgumentException e) {
// Error with result in capturing image with default resolution
e.printStackTrace();
imageCapture = new ImageCapture.Builder()
.build();
camera = cameraProvider.bindToLifecycle(
getActivity(),
cameraSelector,
preview,
imageCapture
);
}
setUpCamera(device,cameraProvider);

preview.setSurfaceProvider(viewFinder.getSurfaceProvider());
cameraSwitchedCallback.onSwitch(true);
});
}

@SuppressLint("RestrictedApi")
public CameraSelector getCameraSelector(String captureDevice) {
public void setUpCamera(String captureDevice, ProcessCameraProvider cameraProvider) {
CameraSelector cameraSelector;
if (captureDevice.equals("ultra-wide-angle")) {
return new CameraSelector.Builder()
cameraSelector = new CameraSelector.Builder()
.addCameraFilter(cameraInfos -> {
List<Camera2CameraInfoImpl> backCameras = new ArrayList<>();
for (CameraInfo cameraInfo : cameraInfos) {
Expand All @@ -452,9 +391,41 @@ public CameraSelector getCameraSelector(String captureDevice) {
})
.build();
} else {
return new CameraSelector.Builder()
cameraSelector = new CameraSelector.Builder()
.requireLensFacing(direction)
.build();
}

Size targetResolution = null;
if (targetSize > 0) {
targetResolution = CameraPreviewFragment.calculateResolution(getContext(), targetSize);
}

preview = new Preview.Builder().build();
imageCapture = new ImageCapture.Builder()
.setTargetResolution(targetResolution)
.build();

cameraProvider.unbindAll();
try {
camera = cameraProvider.bindToLifecycle(
getActivity(),
cameraSelector,
preview,
imageCapture
);
} catch (IllegalArgumentException e) {
// Error with result in capturing image with default resolution
e.printStackTrace();
imageCapture = new ImageCapture.Builder()
.build();
camera = cameraProvider.bindToLifecycle(
getActivity(),
cameraSelector,
preview,
imageCapture
);
}

}
}
8 changes: 3 additions & 5 deletions src/ios/SimpleCameraPreview.m
Original file line number Diff line number Diff line change
Expand Up @@ -74,23 +74,21 @@ - (void) enable:(CDVInvokedUrlCommand*)command {
[setupSessionOptions setValue:[NSNumber numberWithInteger:targetSize] forKey:@"targetSize"];
}
NSString *captureDevice = config[@"captureDevice"];
if (captureDevice != [NSNull null] && ![captureDevice isEqual: @""]) {
if (captureDevice && [captureDevice length] > 0) {
[setupSessionOptions setValue:captureDevice forKey:@"captureDevice"];
}
} @catch(NSException *exception) {
[self.commandDelegate sendPluginResult:[CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"targetSize not well defined"] callbackId:command.callbackId];
}
}

self.photoSettings = [AVCapturePhotoSettings photoSettingsWithFormat:@{AVVideoCodecKey : AVVideoCodecTypeJPEG}];
NSDictionary *immutableSetupSessionOptions = [setupSessionOptions copy];
[self.sessionManager setupSession:@"back" completion:^(BOOL started) {
self.photoSettings = [AVCapturePhotoSettings photoSettingsWithFormat:@{AVVideoCodecKey : AVVideoCodecTypeJPEG}]; [self.sessionManager setupSession:@"back" completion:^(BOOL started) {
dispatch_async(dispatch_get_main_queue(), ^{
CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
[pluginResult setKeepCallbackAsBool:true];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
});
} options:immutableSetupSessionOptions photoSettings:self.photoSettings];
} options:setupSessionOptions photoSettings:self.photoSettings];
}

- (void) sessionNotInterrupted:(NSNotification *)notification {
Expand Down

0 comments on commit df81319

Please sign in to comment.