[camera_android] Fix camera android deprecation warning for CamcorderProfile.get() (#3273)
[camera_android] Fix camera android deprecation warning for CamcorderProfile.get()
diff --git a/packages/camera/camera_android/CHANGELOG.md b/packages/camera/camera_android/CHANGELOG.md
index 8fa5a30..8b0b6c1 100644
--- a/packages/camera/camera_android/CHANGELOG.md
+++ b/packages/camera/camera_android/CHANGELOG.md
@@ -1,7 +1,10 @@
-## NEXT
+## 0.10.4+2
* Aligns Dart and Flutter SDK constraints.
* Updates compileSdkVersion to 33.
+* Fixes false positive for CamcorderProfile deprecation warning
+ that was already fixed.
+* Changes the severity of `javac` warnings so that they are treated as errors and fixes the violations.
## 0.10.4+1
diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java
index b02d686..264ab72 100644
--- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java
+++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java
@@ -57,7 +57,6 @@
import io.flutter.plugins.camera.features.resolution.ResolutionFeature;
import io.flutter.plugins.camera.features.resolution.ResolutionPreset;
import io.flutter.plugins.camera.features.sensororientation.DeviceOrientationManager;
-import io.flutter.plugins.camera.features.sensororientation.SensorOrientationFeature;
import io.flutter.plugins.camera.features.zoomlevel.ZoomLevelFeature;
import io.flutter.plugins.camera.media.MediaRecorderBuilder;
import io.flutter.plugins.camera.types.CameraCaptureProperties;
@@ -79,24 +78,6 @@
void onError(String errorCode, String errorMessage);
}
-/** A mockable wrapper for CameraDevice calls. */
-interface CameraDeviceWrapper {
- @NonNull
- CaptureRequest.Builder createCaptureRequest(int templateType) throws CameraAccessException;
-
- @TargetApi(VERSION_CODES.P)
- void createCaptureSession(SessionConfiguration config) throws CameraAccessException;
-
- @TargetApi(VERSION_CODES.LOLLIPOP)
- void createCaptureSession(
- @NonNull List<Surface> outputs,
- @NonNull CameraCaptureSession.StateCallback callback,
- @Nullable Handler handler)
- throws CameraAccessException;
-
- void close();
-}
-
class Camera
implements CameraCaptureCallback.CameraCaptureStateListener,
ImageReader.OnImageAvailableListener {
@@ -239,7 +220,7 @@
* @param requestBuilder request builder to update.
*/
private void updateBuilderSettings(CaptureRequest.Builder requestBuilder) {
- for (CameraFeature feature : cameraFeatures.getAllFeatures()) {
+ for (CameraFeature<?> feature : cameraFeatures.getAllFeatures()) {
Log.d(TAG, "Updating builder with feature: " + feature.getDebugName());
feature.updateBuilder(requestBuilder);
}
@@ -253,8 +234,7 @@
}
final PlatformChannel.DeviceOrientation lockedOrientation =
- ((SensorOrientationFeature) cameraFeatures.getSensorOrientation())
- .getLockedCaptureOrientation();
+ cameraFeatures.getSensorOrientation().getLockedCaptureOrientation();
MediaRecorderBuilder mediaRecorderBuilder;
@@ -637,8 +617,7 @@
// Orientation.
final PlatformChannel.DeviceOrientation lockedOrientation =
- ((SensorOrientationFeature) cameraFeatures.getSensorOrientation())
- .getLockedCaptureOrientation();
+ cameraFeatures.getSensorOrientation().getLockedCaptureOrientation();
stillBuilder.set(
CaptureRequest.JPEG_ORIENTATION,
lockedOrientation == null
diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraDeviceWrapper.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraDeviceWrapper.java
new file mode 100644
index 0000000..6a8a8f6
--- /dev/null
+++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraDeviceWrapper.java
@@ -0,0 +1,35 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package io.flutter.plugins.camera;
+
+import android.annotation.TargetApi;
+import android.hardware.camera2.CameraAccessException;
+import android.hardware.camera2.CameraCaptureSession;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.params.SessionConfiguration;
+import android.os.Build;
+import android.os.Handler;
+import android.view.Surface;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import java.util.List;
+
+/** A mockable wrapper for CameraDevice calls. */
+interface CameraDeviceWrapper {
+ @NonNull
+ CaptureRequest.Builder createCaptureRequest(int templateType) throws CameraAccessException;
+
+ @TargetApi(Build.VERSION_CODES.P)
+ void createCaptureSession(SessionConfiguration config) throws CameraAccessException;
+
+ @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+ void createCaptureSession(
+ @NonNull List<Surface> outputs,
+ @NonNull CameraCaptureSession.StateCallback callback,
+ @Nullable Handler handler)
+ throws CameraAccessException;
+
+ void close();
+}
diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraProperties.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraProperties.java
index a69bae4..7e061a2 100644
--- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraProperties.java
+++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraProperties.java
@@ -5,12 +5,8 @@
package io.flutter.plugins.camera;
import android.graphics.Rect;
-import android.hardware.camera2.CameraAccessException;
-import android.hardware.camera2.CameraCharacteristics;
-import android.hardware.camera2.CameraManager;
import android.os.Build.VERSION_CODES;
import android.util.Range;
-import android.util.Rational;
import android.util.Size;
import androidx.annotation.RequiresApi;
@@ -260,127 +256,3 @@
*/
int[] getAvailableNoiseReductionModes();
}
-
-/**
- * Implementation of the @see CameraProperties interface using the @see
- * android.hardware.camera2.CameraCharacteristics class to access the different characteristics.
- */
-class CameraPropertiesImpl implements CameraProperties {
- private final CameraCharacteristics cameraCharacteristics;
- private final String cameraName;
-
- public CameraPropertiesImpl(String cameraName, CameraManager cameraManager)
- throws CameraAccessException {
- this.cameraName = cameraName;
- this.cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraName);
- }
-
- @Override
- public String getCameraName() {
- return cameraName;
- }
-
- @Override
- public Range<Integer>[] getControlAutoExposureAvailableTargetFpsRanges() {
- return cameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);
- }
-
- @Override
- public Range<Integer> getControlAutoExposureCompensationRange() {
- return cameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE);
- }
-
- @Override
- public double getControlAutoExposureCompensationStep() {
- Rational rational =
- cameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP);
-
- return rational == null ? 0.0 : rational.doubleValue();
- }
-
- @Override
- public int[] getControlAutoFocusAvailableModes() {
- return cameraCharacteristics.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
- }
-
- @Override
- public Integer getControlMaxRegionsAutoExposure() {
- return cameraCharacteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AE);
- }
-
- @Override
- public Integer getControlMaxRegionsAutoFocus() {
- return cameraCharacteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AF);
- }
-
- @RequiresApi(api = VERSION_CODES.P)
- @Override
- public int[] getDistortionCorrectionAvailableModes() {
- return cameraCharacteristics.get(CameraCharacteristics.DISTORTION_CORRECTION_AVAILABLE_MODES);
- }
-
- @Override
- public Boolean getFlashInfoAvailable() {
- return cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
- }
-
- @Override
- public int getLensFacing() {
- return cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
- }
-
- @Override
- public Float getLensInfoMinimumFocusDistance() {
- return cameraCharacteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);
- }
-
- @Override
- public Float getScalerAvailableMaxDigitalZoom() {
- return cameraCharacteristics.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM);
- }
-
- @RequiresApi(api = VERSION_CODES.R)
- @Override
- public Float getScalerMaxZoomRatio() {
- return cameraCharacteristics.get(CameraCharacteristics.CONTROL_ZOOM_RATIO_RANGE).getUpper();
- }
-
- @RequiresApi(api = VERSION_CODES.R)
- @Override
- public Float getScalerMinZoomRatio() {
- return cameraCharacteristics.get(CameraCharacteristics.CONTROL_ZOOM_RATIO_RANGE).getLower();
- }
-
- @Override
- public Rect getSensorInfoActiveArraySize() {
- return cameraCharacteristics.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE);
- }
-
- @Override
- public Size getSensorInfoPixelArraySize() {
- return cameraCharacteristics.get(CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE);
- }
-
- @RequiresApi(api = VERSION_CODES.M)
- @Override
- public Rect getSensorInfoPreCorrectionActiveArraySize() {
- return cameraCharacteristics.get(
- CameraCharacteristics.SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE);
- }
-
- @Override
- public int getSensorOrientation() {
- return cameraCharacteristics.get(CameraCharacteristics.SENSOR_ORIENTATION);
- }
-
- @Override
- public int getHardwareLevel() {
- return cameraCharacteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
- }
-
- @Override
- public int[] getAvailableNoiseReductionModes() {
- return cameraCharacteristics.get(
- CameraCharacteristics.NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES);
- }
-}
diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraPropertiesImpl.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraPropertiesImpl.java
new file mode 100644
index 0000000..66bb290
--- /dev/null
+++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraPropertiesImpl.java
@@ -0,0 +1,139 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package io.flutter.plugins.camera;
+
+import android.graphics.Rect;
+import android.hardware.camera2.CameraAccessException;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraManager;
+import android.os.Build.VERSION_CODES;
+import android.util.Range;
+import android.util.Rational;
+import android.util.Size;
+import androidx.annotation.RequiresApi;
+
+/**
+ * Implementation of the @see CameraProperties interface using the @see
+ * android.hardware.camera2.CameraCharacteristics class to access the different characteristics.
+ */
+public class CameraPropertiesImpl implements CameraProperties {
+ private final CameraCharacteristics cameraCharacteristics;
+ private final String cameraName;
+
+ public CameraPropertiesImpl(String cameraName, CameraManager cameraManager)
+ throws CameraAccessException {
+ this.cameraName = cameraName;
+ this.cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraName);
+ }
+
+ @Override
+ public String getCameraName() {
+ return cameraName;
+ }
+
+ @Override
+ public Range<Integer>[] getControlAutoExposureAvailableTargetFpsRanges() {
+ return cameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);
+ }
+
+ @Override
+ public Range<Integer> getControlAutoExposureCompensationRange() {
+ return cameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE);
+ }
+
+ @Override
+ public double getControlAutoExposureCompensationStep() {
+ Rational rational =
+ cameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP);
+
+ return rational == null ? 0.0 : rational.doubleValue();
+ }
+
+ @Override
+ public int[] getControlAutoFocusAvailableModes() {
+ return cameraCharacteristics.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
+ }
+
+ @Override
+ public Integer getControlMaxRegionsAutoExposure() {
+ return cameraCharacteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AE);
+ }
+
+ @Override
+ public Integer getControlMaxRegionsAutoFocus() {
+ return cameraCharacteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AF);
+ }
+
+ @RequiresApi(api = VERSION_CODES.P)
+ @Override
+ public int[] getDistortionCorrectionAvailableModes() {
+ return cameraCharacteristics.get(CameraCharacteristics.DISTORTION_CORRECTION_AVAILABLE_MODES);
+ }
+
+ @Override
+ public Boolean getFlashInfoAvailable() {
+ return cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
+ }
+
+ @Override
+ public int getLensFacing() {
+ return cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
+ }
+
+ @Override
+ public Float getLensInfoMinimumFocusDistance() {
+ return cameraCharacteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);
+ }
+
+ @Override
+ public Float getScalerAvailableMaxDigitalZoom() {
+ return cameraCharacteristics.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM);
+ }
+
+ @RequiresApi(api = VERSION_CODES.R)
+ @Override
+ public Float getScalerMaxZoomRatio() {
+ return cameraCharacteristics.get(CameraCharacteristics.CONTROL_ZOOM_RATIO_RANGE).getUpper();
+ }
+
+ @RequiresApi(api = VERSION_CODES.R)
+ @Override
+ public Float getScalerMinZoomRatio() {
+ return cameraCharacteristics.get(CameraCharacteristics.CONTROL_ZOOM_RATIO_RANGE).getLower();
+ }
+
+ @Override
+ public Rect getSensorInfoActiveArraySize() {
+ return cameraCharacteristics.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE);
+ }
+
+ @Override
+ public Size getSensorInfoPixelArraySize() {
+ return cameraCharacteristics.get(CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE);
+ }
+
+ @RequiresApi(api = VERSION_CODES.M)
+ @Override
+ public Rect getSensorInfoPreCorrectionActiveArraySize() {
+ return cameraCharacteristics.get(
+ CameraCharacteristics.SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE);
+ }
+
+ @Override
+ public int getSensorOrientation() {
+ return cameraCharacteristics.get(CameraCharacteristics.SENSOR_ORIENTATION);
+ }
+
+ @Override
+ public int getHardwareLevel() {
+ return cameraCharacteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+ }
+
+ @Override
+ public int[] getAvailableNoiseReductionModes() {
+ return cameraCharacteristics.get(
+ CameraCharacteristics.NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES);
+ }
+}
diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatures.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatures.java
index 659fd15..c7ed9bb 100644
--- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatures.java
+++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatures.java
@@ -74,14 +74,14 @@
return cameraFeatures;
}
- private Map<String, CameraFeature> featureMap = new HashMap<>();
+ private Map<String, CameraFeature<?>> featureMap = new HashMap<>();
/**
* Gets a collection of all features that have been set.
*
* @return A collection of all features that have been set.
*/
- public Collection<CameraFeature> getAllFeatures() {
+ public Collection<CameraFeature<?>> getAllFeatures() {
return this.featureMap.values();
}
diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/autofocus/AutoFocusFeature.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/autofocus/AutoFocusFeature.java
index 1789a96..818e4e9 100644
--- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/autofocus/AutoFocusFeature.java
+++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/autofocus/AutoFocusFeature.java
@@ -76,6 +76,7 @@
recordingVideo
? CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_VIDEO
: CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
+ break;
default:
break;
}
diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/resolution/ResolutionFeature.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/resolution/ResolutionFeature.java
index 0ec2fbe..a80c340 100644
--- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/resolution/ResolutionFeature.java
+++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/resolution/ResolutionFeature.java
@@ -125,8 +125,7 @@
}
}
- @SuppressWarnings("deprecation")
- // TODO(camsim99): Suppression is currently safe because legacy code is used as a fallback for SDK >= S.
+ // TODO(camsim99): Suppression is currently safe because legacy code is used as a fallback for SDK < S.
// This should be removed when reverting that fallback behavior: https://github.com/flutter/flutter/issues/119668.
CamcorderProfile profile =
getBestAvailableCamcorderProfileForResolutionPresetLegacy(cameraId, preset);
@@ -144,6 +143,9 @@
* @return The best possible {@link android.media.CamcorderProfile} that matches the supplied
* {@link ResolutionPreset}.
*/
+ @TargetApi(Build.VERSION_CODES.R)
+ // All of these cases deliberately fall through to get the best available profile.
+ @SuppressWarnings({"fallthrough", "deprecation"})
public static CamcorderProfile getBestAvailableCamcorderProfileForResolutionPresetLegacy(
int cameraId, ResolutionPreset preset) {
if (cameraId < 0) {
@@ -152,31 +154,36 @@
}
switch (preset) {
- // All of these cases deliberately fall through to get the best available profile.
case max:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_HIGH)) {
return CamcorderProfile.get(cameraId, CamcorderProfile.QUALITY_HIGH);
}
+ // fall through
case ultraHigh:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_2160P)) {
return CamcorderProfile.get(cameraId, CamcorderProfile.QUALITY_2160P);
}
+ // fall through
case veryHigh:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_1080P)) {
return CamcorderProfile.get(cameraId, CamcorderProfile.QUALITY_1080P);
}
+ // fall through
case high:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_720P)) {
return CamcorderProfile.get(cameraId, CamcorderProfile.QUALITY_720P);
}
+ // fall through
case medium:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_480P)) {
return CamcorderProfile.get(cameraId, CamcorderProfile.QUALITY_480P);
}
+ // fall through
case low:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_QVGA)) {
return CamcorderProfile.get(cameraId, CamcorderProfile.QUALITY_QVGA);
}
+ // fall through
default:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_LOW)) {
return CamcorderProfile.get(cameraId, CamcorderProfile.QUALITY_LOW);
@@ -188,6 +195,8 @@
}
@TargetApi(Build.VERSION_CODES.S)
+ // All of these cases deliberately fall through to get the best available profile.
+ @SuppressWarnings("fallthrough")
public static EncoderProfiles getBestAvailableCamcorderProfileForResolutionPreset(
int cameraId, ResolutionPreset preset) {
if (cameraId < 0) {
@@ -198,31 +207,36 @@
String cameraIdString = Integer.toString(cameraId);
switch (preset) {
- // All of these cases deliberately fall through to get the best available profile.
case max:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_HIGH)) {
return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_HIGH);
}
+ // fall through
case ultraHigh:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_2160P)) {
return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_2160P);
}
+ // fall through
case veryHigh:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_1080P)) {
return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_1080P);
}
+ // fall through
case high:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_720P)) {
return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_720P);
}
+ // fall through
case medium:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_480P)) {
return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_480P);
}
+ // fall through
case low:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_QVGA)) {
return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_QVGA);
}
+ // fall through
default:
if (CamcorderProfile.hasProfile(cameraId, CamcorderProfile.QUALITY_LOW)) {
return CamcorderProfile.getAll(cameraIdString, CamcorderProfile.QUALITY_LOW);
@@ -256,7 +270,6 @@
if (!captureSizeCalculated) {
recordingProfile = null;
- @SuppressWarnings("deprecation")
CamcorderProfile camcorderProfile =
getBestAvailableCamcorderProfileForResolutionPresetLegacy(cameraId, resolutionPreset);
recordingProfileLegacy = camcorderProfile;
diff --git a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraPropertiesImplTest.java b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraPropertiesImplTest.java
index c61be04..297c09c 100644
--- a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraPropertiesImplTest.java
+++ b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraPropertiesImplTest.java
@@ -50,7 +50,9 @@
@SuppressWarnings("unchecked")
public void getControlAutoExposureAvailableTargetFpsRangesTest() {
Range<Integer> mockRange = mock(Range.class);
- Range<Integer>[] mockRanges = new Range[] {mockRange};
+ // Use a wildcard, since `new Range<Integer>[] {mockRange}`
+ // results in a 'Generic array creation' error.
+ Range<Integer>[] mockRanges = (Range<Integer>[]) new Range<?>[] {mockRange};
when(mockCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES))
.thenReturn(mockRanges);
@@ -177,7 +179,7 @@
@Test
public void getLensInfoMinimumFocusDistanceTest() {
- Float expectedFocusDistance = new Float(3.14);
+ Float expectedFocusDistance = 3.14f;
when(mockCharacteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE))
.thenReturn(expectedFocusDistance);
@@ -190,7 +192,7 @@
@Test
public void getScalerAvailableMaxDigitalZoomTest() {
- Float expectedDigitalZoom = new Float(3.14);
+ Float expectedDigitalZoom = 3.14f;
when(mockCharacteristics.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM))
.thenReturn(expectedDigitalZoom);
@@ -203,7 +205,8 @@
@Test
public void getScalerGetScalerMinZoomRatioTest() {
- Range zoomRange = mock(Range.class);
+ @SuppressWarnings("unchecked")
+ Range<Float> zoomRange = (Range<Float>) mock(Range.class);
when(mockCharacteristics.get(CameraCharacteristics.CONTROL_ZOOM_RATIO_RANGE))
.thenReturn(zoomRange);
@@ -215,7 +218,8 @@
@Test
public void getScalerGetScalerMaxZoomRatioTest() {
- Range zoomRange = mock(Range.class);
+ @SuppressWarnings("unchecked")
+ Range<Float> zoomRange = (Range<Float>) mock(Range.class);
when(mockCharacteristics.get(CameraCharacteristics.CONTROL_ZOOM_RATIO_RANGE))
.thenReturn(zoomRange);
diff --git a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java
index b34a04f..800c3f7 100644
--- a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java
+++ b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java
@@ -149,10 +149,7 @@
ExposurePointFeature exposurePointFeature =
new ExposurePointFeature(mockCameraProperties, mockSensorOrientationFeature);
- try (MockedStatic<CameraRegionUtils> mockedCameraRegionUtils =
- Mockito.mockStatic(CameraRegionUtils.class)) {
- exposurePointFeature.setValue(new Point(0.5, 0.5));
- }
+ exposurePointFeature.setValue(new Point(0.5, 0.5));
}
@Test
diff --git a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/focuspoint/FocusPointFeatureTest.java b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/focuspoint/FocusPointFeatureTest.java
index f03dc9f..bfc0ebc 100644
--- a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/focuspoint/FocusPointFeatureTest.java
+++ b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/focuspoint/FocusPointFeatureTest.java
@@ -150,10 +150,7 @@
FocusPointFeature focusPointFeature =
new FocusPointFeature(mockCameraProperties, mockSensorOrientationFeature);
- try (MockedStatic<CameraRegionUtils> mockedCameraRegionUtils =
- Mockito.mockStatic(CameraRegionUtils.class)) {
- focusPointFeature.setValue(new Point(0.5, 0.5));
- }
+ focusPointFeature.setValue(new Point(0.5, 0.5));
}
@Test
diff --git a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeatureTest.java b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeatureTest.java
index 2bb4d84..ea67636 100644
--- a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeatureTest.java
+++ b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeatureTest.java
@@ -96,8 +96,10 @@
when(rangeTwo.getUpper()).thenReturn(12);
when(rangeThree.getUpper()).thenReturn(13);
+ // Use a wildcard, since `new Range<Integer>[] {rangeOne, rangeTwo, rangeThree}`
+ // results in a 'Generic array creation' error.
@SuppressWarnings("unchecked")
- Range<Integer>[] ranges = new Range[] {rangeOne, rangeTwo, rangeThree};
+ Range<Integer>[] ranges = (Range<Integer>[]) new Range<?>[] {rangeOne, rangeTwo, rangeThree};
CameraProperties cameraProperties = mock(CameraProperties.class);
diff --git a/packages/camera/camera_android/example/android/build.gradle b/packages/camera/camera_android/example/android/build.gradle
index e54be49..807cc56 100644
--- a/packages/camera/camera_android/example/android/build.gradle
+++ b/packages/camera/camera_android/example/android/build.gradle
@@ -35,9 +35,7 @@
gradle.projectsEvaluated {
project(":camera_android") {
tasks.withType(JavaCompile) {
- // TODO(stuartmorgan): Enable this. See
- // https://github.com/flutter/flutter/issues/91868
- //options.compilerArgs << "-Xlint:all" << "-Werror"
+ options.compilerArgs << "-Xlint:all" << "-Werror"
}
}
}
diff --git a/packages/camera/camera_android/pubspec.yaml b/packages/camera/camera_android/pubspec.yaml
index e44e72c..5aab2cd 100644
--- a/packages/camera/camera_android/pubspec.yaml
+++ b/packages/camera/camera_android/pubspec.yaml
@@ -2,7 +2,7 @@
description: Android implementation of the camera plugin.
repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.10.4+1
+version: 0.10.4+2
environment:
sdk: ">=2.17.0 <3.0.0"