File tree Expand file tree Collapse file tree 6 files changed +21
-4
lines changed
android/src/main/java/com/apparence/camerawesome Expand file tree Collapse file tree 6 files changed +21
-4
lines changed Original file line number Diff line number Diff line change 33- stability between rebuilds improved on Flutter side
44- [ android] check size is correctly set before starting camera
55- CameraPreview try 3 times to start if camera is locked (each try are 1s ellapsed)
6- -
6+ - Fix android zoom when taking picture
77## 0.1.0
88- image stream available to use MLkit or other image live processing (Only android)
99## 0.0.2+3
Original file line number Diff line number Diff line change @@ -167,6 +167,7 @@ private void captureStillPicture() throws CameraAccessException {
167167 takePhotoRequestBuilder .set (CaptureRequest .CONTROL_AE_MODE , CaptureRequest .CONTROL_AE_MODE_ON );
168168 break ;
169169 }
170+ takePhotoRequestBuilder .set (CaptureRequest .SCALER_CROP_REGION , mCameraSession .getZoomArea ());
170171 takePhotoRequestBuilder .set (CaptureRequest .JPEG_ORIENTATION , orientation );
171172 mCameraSession .getCaptureSession ().stopRepeating ();
172173 mCameraSession .getCaptureSession ().capture (takePhotoRequestBuilder .build (), mCaptureCallback , null );
Original file line number Diff line number Diff line change @@ -112,6 +112,7 @@ void createCameraPreviewSession(final CameraDevice cameraDevice) throws CameraAc
112112 mPreviewRequestBuilder = cameraDevice .createCaptureRequest (CameraDevice .TEMPLATE_PREVIEW );
113113 // save initial region for zoom management
114114 mInitialCropRegion = mPreviewRequestBuilder .get (CaptureRequest .SCALER_CROP_REGION );
115+ mCameraSession .setZoomArea (mInitialCropRegion );
115116 initPreviewRequest ();
116117 // only start preview ImageReader if asked for it
117118 if (streamPreviewImages ) {
@@ -270,8 +271,10 @@ private void updateZoom() {
270271 // ¯\_(ツ)_/¯ for some devices calculating the Rect for zoom=1 results in a bit different
271272 // Rect that device claims as its no-zoom crop region and the preview freezes
272273 if (scaledZoom != 1.0f ) {
274+ mCameraSession .setZoomArea (zoomPreviewArea );
273275 mPreviewRequestBuilder .set (CaptureRequest .SCALER_CROP_REGION , zoomPreviewArea );
274276 } else {
277+ mCameraSession .setZoomArea (mInitialCropRegion );
275278 mPreviewRequestBuilder .set (CaptureRequest .SCALER_CROP_REGION , mInitialCropRegion );
276279 }
277280 }
Original file line number Diff line number Diff line change 11package com .apparence .camerawesome ;
22
3+ import android .graphics .Rect ;
34import android .hardware .camera2 .CameraAccessException ;
45import android .hardware .camera2 .CameraCaptureSession ;
56import android .hardware .camera2 .CameraDevice ;
@@ -38,6 +39,8 @@ public class CameraSession {
3839
3940 private CameraDevice cameraDevice ;
4041
42+ private Rect zoomArea ;
43+
4144 void createCameraCaptureSession (final CameraDevice cameraDevice ) throws CameraAccessException {
4245 this .cameraDevice = cameraDevice ;
4346 cameraDevice .createCaptureSession (new ArrayList <>(surfaces .values ()), new CameraCaptureSession .StateCallback () {
@@ -126,6 +129,14 @@ public void setCaptureSession(CameraCaptureSession mCaptureSession) {
126129 this .mCaptureSession = mCaptureSession ;
127130 }
128131
132+ public Rect getZoomArea () {
133+ return zoomArea ;
134+ }
135+
136+ public void setZoomArea (Rect zoomArea ) {
137+ this .zoomArea = zoomArea ;
138+ }
139+
129140 /**
130141 * Used to signal that session is ready to all class using CameraSession
131142 */
Original file line number Diff line number Diff line change @@ -49,7 +49,7 @@ packages:
4949 path: ".."
5050 relative: true
5151 source: path
52- version: "0.1.0 "
52+ version: "0.1.1 "
5353 characters:
5454 dependency: transitive
5555 description:
Original file line number Diff line number Diff line change @@ -65,10 +65,12 @@ void main() {
6565 var takePhotoBtnFinder = find.byKey (ValueKey ("takePhotoButton" ));
6666 // change photo size preset
6767 var previousResolution = (find.byKey (ValueKey ("resolutionTxt" )).evaluate ().first.widget as Text ).data;
68- await tester.tap (find.byKey (ValueKey ("resolutionButton" )));
68+ var resolButtonFinder = find.byKey (ValueKey ("resolutionButton" ));
69+ (resolButtonFinder.evaluate ().first.widget as FlatButton ).onPressed ();
6970 await tester.pump (Duration (milliseconds: 1000 ));
7071 await tester.pumpAndSettle (Duration (milliseconds: 1000 ));
71- await tester.tap (find.byKey (ValueKey ("resOption" )).at (1 ));
72+ var optionsFinder = find.byKey (ValueKey ("resOption" ));
73+ await tester.tap (optionsFinder.last);
7274 await tester.pump (Duration (milliseconds: 500 ));
7375 var currentResolution = (find.byKey (ValueKey ("resolutionTxt" )).evaluate ().first.widget as Text ).data;
7476 expect (previousResolution, isNot (equals (currentResolution)));
You can’t perform that action at this time.
0 commit comments