diff --git a/packages/camera/CHANGELOG.md b/packages/camera/CHANGELOG.md index 403793276c66..5d349bd8998b 100644 --- a/packages/camera/CHANGELOG.md +++ b/packages/camera/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.2 + +* Add sensor orientation value to `CameraDescription`. + ## 0.4.1 * Camera methods are ran in a background thread on iOS. 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 8cdc95e19790..7ab3c44f962a 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 @@ -164,6 +164,9 @@ public void onMethodCall(MethodCall call, final Result result) { cameraManager.getCameraCharacteristics(cameraName); details.put("name", cameraName); @SuppressWarnings("ConstantConditions") + int sensorOrientation = characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION); + details.put("sensorOrientation", sensorOrientation); + int lensFacing = characteristics.get(CameraCharacteristics.LENS_FACING); switch (lensFacing) { case CameraMetadata.LENS_FACING_FRONT: diff --git a/packages/camera/ios/Classes/CameraPlugin.m b/packages/camera/ios/Classes/CameraPlugin.m index 1f21e3c77f06..643f361689b2 100644 --- a/packages/camera/ios/Classes/CameraPlugin.m +++ b/packages/camera/ios/Classes/CameraPlugin.m @@ -670,6 +670,7 @@ - (void)handleMethodCallAsync:(FlutterMethodCall *)call result:(FlutterResult)re [reply addObject:@{ @"name" : [device uniqueID], @"lensFacing" : lensFacing, + @"sensorOrientation" : @90, }]; } result(reply); diff --git a/packages/camera/lib/camera.dart b/packages/camera/lib/camera.dart index cf636a199b1f..090e7767c95c 100644 --- a/packages/camera/lib/camera.dart +++ b/packages/camera/lib/camera.dart @@ -58,6 +58,7 @@ Future> availableCameras() async { return CameraDescription( name: camera['name'], lensDirection: _parseCameraLensDirection(camera['lensFacing']), + sensorOrientation: camera['sensorOrientation'], ); }).toList(); } on PlatformException catch (e) { @@ -66,11 +67,20 @@ Future> availableCameras() async { } class CameraDescription { - CameraDescription({this.name, this.lensDirection}); + CameraDescription({this.name, this.lensDirection, this.sensorOrientation}); final String name; final CameraLensDirection lensDirection; + /// Clockwise angle through which the output image needs to be rotated to be upright on the device screen in its native orientation. + /// + /// **Range of valid values:** + /// 0, 90, 180, 270 + /// + /// On Android, also defines the direction of rolling shutter readout, which + /// is from top to bottom in the sensor's coordinate system. + final int sensorOrientation; + @override bool operator ==(Object o) { return o is CameraDescription && @@ -85,7 +95,7 @@ class CameraDescription { @override String toString() { - return '$runtimeType($name, $lensDirection)'; + return '$runtimeType($name, $lensDirection, $sensorOrientation)'; } } diff --git a/packages/camera/pubspec.yaml b/packages/camera/pubspec.yaml index 831ad8601128..0abbf6a003aa 100644 --- a/packages/camera/pubspec.yaml +++ b/packages/camera/pubspec.yaml @@ -2,7 +2,7 @@ name: camera description: A Flutter plugin for getting information about and controlling the camera on Android and iOS. Supports previewing the camera feed, capturing images, capturing video, and streaming image buffers to dart. -version: 0.4.1 +version: 0.4.2 authors: - Flutter Team - Luigi Agosti