diff --git a/packages/camera/camera_avfoundation/CHANGELOG.md b/packages/camera/camera_avfoundation/CHANGELOG.md index a3e714fc33d..2df5310c70a 100644 --- a/packages/camera/camera_avfoundation/CHANGELOG.md +++ b/packages/camera/camera_avfoundation/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.14 + +* Allow to get all available cameras, such as dual camera, triple camera. + ## 0.9.13+1 * Clarifies explanation of endorsement in README. diff --git a/packages/camera/camera_avfoundation/example/ios/RunnerTests/AvailableCamerasTest.m b/packages/camera/camera_avfoundation/example/ios/RunnerTests/AvailableCamerasTest.m index 6074b871cd0..a98ebe48567 100644 --- a/packages/camera/camera_avfoundation/example/ios/RunnerTests/AvailableCamerasTest.m +++ b/packages/camera/camera_avfoundation/example/ios/RunnerTests/AvailableCamerasTest.m @@ -36,13 +36,20 @@ - (void)testAvailableCamerasShouldReturnAllCamerasOnMultiCameraIPhone { OCMStub([telephotoCamera uniqueID]).andReturn(@"3"); OCMStub([telephotoCamera position]).andReturn(AVCaptureDevicePositionBack); - NSMutableArray *requiredTypes = - [@[ AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInTelephotoCamera ] - mutableCopy]; + NSMutableArray *requiredTypes = [@[ + AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInDualCamera, + AVCaptureDeviceTypeBuiltInTelephotoCamera + ] mutableCopy]; if (@available(iOS 13.0, *)) { [requiredTypes addObject:AVCaptureDeviceTypeBuiltInUltraWideCamera]; + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInTrueDepthCamera]; + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInTripleCamera]; + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInDualWideCamera]; + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInUltraWideCamera]; + } + if (@available(iOS 15.4, *)) { + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInLiDARDepthCamera]; } - id discoverySessionMock = OCMClassMock([AVCaptureDeviceDiscoverySession class]); OCMStub([discoverySessionMock discoverySessionWithDeviceTypes:requiredTypes mediaType:AVMediaTypeVideo @@ -87,11 +94,19 @@ - (void)testAvailableCamerasShouldReturnOneCameraOnSingleCameraIPhone { OCMStub([frontFacingCamera uniqueID]).andReturn(@"1"); OCMStub([frontFacingCamera position]).andReturn(AVCaptureDevicePositionFront); - NSMutableArray *requiredTypes = - [@[ AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInTelephotoCamera ] - mutableCopy]; + NSMutableArray *requiredTypes = [@[ + AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInDualCamera, + AVCaptureDeviceTypeBuiltInTelephotoCamera + ] mutableCopy]; if (@available(iOS 13.0, *)) { [requiredTypes addObject:AVCaptureDeviceTypeBuiltInUltraWideCamera]; + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInTrueDepthCamera]; + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInTripleCamera]; + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInDualWideCamera]; + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInUltraWideCamera]; + } + if (@available(iOS 15.4, *)) { + [requiredTypes addObject:AVCaptureDeviceTypeBuiltInLiDARDepthCamera]; } id discoverySessionMock = OCMClassMock([AVCaptureDeviceDiscoverySession class]); diff --git a/packages/camera/camera_avfoundation/ios/Classes/CameraPlugin.m b/packages/camera/camera_avfoundation/ios/Classes/CameraPlugin.m index 874f37b6c4f..cdeb1df5cda 100644 --- a/packages/camera/camera_avfoundation/ios/Classes/CameraPlugin.m +++ b/packages/camera/camera_avfoundation/ios/Classes/CameraPlugin.m @@ -104,12 +104,19 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result - (void)handleMethodCallAsync:(FlutterMethodCall *)call result:(FLTThreadSafeFlutterResult *)result { if ([@"availableCameras" isEqualToString:call.method]) { - NSMutableArray *discoveryDevices = - [@[ AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInTelephotoCamera ] - mutableCopy]; + NSMutableArray *discoveryDevices = [@[ + AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInDualCamera, + AVCaptureDeviceTypeBuiltInTelephotoCamera + ] mutableCopy]; if (@available(iOS 13.0, *)) { + [discoveryDevices addObject:AVCaptureDeviceTypeBuiltInTrueDepthCamera]; + [discoveryDevices addObject:AVCaptureDeviceTypeBuiltInTripleCamera]; + [discoveryDevices addObject:AVCaptureDeviceTypeBuiltInDualWideCamera]; [discoveryDevices addObject:AVCaptureDeviceTypeBuiltInUltraWideCamera]; } + if (@available(iOS 15.4, *)) { + [discoveryDevices addObject:AVCaptureDeviceTypeBuiltInLiDARDepthCamera]; + } AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:discoveryDevices mediaType:AVMediaTypeVideo diff --git a/packages/camera/camera_avfoundation/pubspec.yaml b/packages/camera/camera_avfoundation/pubspec.yaml index 55751196011..cdee8164e4d 100644 --- a/packages/camera/camera_avfoundation/pubspec.yaml +++ b/packages/camera/camera_avfoundation/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_avfoundation description: iOS implementation of the camera plugin. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_avfoundation issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.9.13+1 +version: 0.9.14 environment: sdk: ">=2.18.0 <4.0.0"