diff --git a/packages/camera/android/src/main/java/io/flutter/plugins/camera/CameraPlugin.java b/packages/camera/android/src/main/java/io/flutter/plugins/camera/CameraPlugin.java index 00c1862ca1fd..c963f53ca0b7 100644 --- a/packages/camera/android/src/main/java/io/flutter/plugins/camera/CameraPlugin.java +++ b/packages/camera/android/src/main/java/io/flutter/plugins/camera/CameraPlugin.java @@ -294,6 +294,9 @@ private class Camera { try { Size minPreviewSize; switch (resolutionPreset) { + case "4k": + minPreviewSize = new Size(3840, 2160); + break; case "high": minPreviewSize = new Size(1024, 768); break; diff --git a/packages/camera/ios/Classes/CameraPlugin.m b/packages/camera/ios/Classes/CameraPlugin.m index d54b55e1060f..e60cc7e39839 100644 --- a/packages/camera/ios/Classes/CameraPlugin.m +++ b/packages/camera/ios/Classes/CameraPlugin.m @@ -174,7 +174,10 @@ - (instancetype)initWithCameraName:(NSString *)cameraName NSAssert(self, @"super init cannot be nil"); _captureSession = [[AVCaptureSession alloc] init]; AVCaptureSessionPreset preset; - if ([resolutionPreset isEqualToString:@"high"]) { + if ([resolutionPreset isEqualToString:@"4k"]) { + preset = AVCaptureSessionPreset3840x2160; + _previewSize = CGSizeMake(3840, 2160); + } else if ([resolutionPreset isEqualToString:@"high"]) { preset = AVCaptureSessionPreset1280x720; _previewSize = CGSizeMake(1280, 720); } else if ([resolutionPreset isEqualToString:@"medium"]) { diff --git a/packages/camera/lib/camera.dart b/packages/camera/lib/camera.dart index 2a484b9e1c17..b2d47a4ee6b0 100644 --- a/packages/camera/lib/camera.dart +++ b/packages/camera/lib/camera.dart @@ -14,7 +14,7 @@ final MethodChannel _channel = const MethodChannel('plugins.flutter.io/camera'); enum CameraLensDirection { front, back, external } -enum ResolutionPreset { low, medium, high } +enum ResolutionPreset { low, medium, high, fourk } typedef onLatestImageAvailable = Function(CameraImage image); @@ -27,6 +27,8 @@ String serializeResolutionPreset(ResolutionPreset resolutionPreset) { return 'medium'; case ResolutionPreset.low: return 'low'; + case ResolutionPreset.fourk: + return '4k'; } throw ArgumentError('Unknown ResolutionPreset value'); }