filteredCameraInfosIds = new ArrayList<>();
for (CameraInfo cameraInfo : filteredCameraInfos) {
Long filteredCameraInfoId = instanceManager.getIdentifierForStrongReference(cameraInfo);
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXProxy.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXProxy.java
index 09c100337051..af7fdc36a721 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXProxy.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXProxy.java
@@ -24,35 +24,35 @@ public class CameraXProxy {
* Converts a {@link ResolutionInfo} instance to a {@link Size} for setting the target resolution
* of {@link UseCase}s.
*/
- public static Size sizeFromResolution(@NonNull ResolutionInfo resolutionInfo) {
+ public static @NonNull Size sizeFromResolution(@NonNull ResolutionInfo resolutionInfo) {
return new Size(resolutionInfo.getWidth().intValue(), resolutionInfo.getHeight().intValue());
}
- public CameraSelector.Builder createCameraSelectorBuilder() {
+ public @NonNull CameraSelector.Builder createCameraSelectorBuilder() {
return new CameraSelector.Builder();
}
/** Creates an instance of {@link CameraPermissionsManager}. */
- public CameraPermissionsManager createCameraPermissionsManager() {
+ public @NonNull CameraPermissionsManager createCameraPermissionsManager() {
return new CameraPermissionsManager();
}
/** Creates an instance of the {@link DeviceOrientationManager}. */
- public DeviceOrientationManager createDeviceOrientationManager(
+ public @NonNull DeviceOrientationManager createDeviceOrientationManager(
@NonNull Activity activity,
@NonNull Boolean isFrontFacing,
- @NonNull int sensorOrientation,
+ int sensorOrientation,
@NonNull DeviceOrientationManager.DeviceOrientationChangeCallback callback) {
return new DeviceOrientationManager(activity, isFrontFacing, sensorOrientation, callback);
}
/** Creates a builder for an instance of the {@link Preview} use case. */
- public Preview.Builder createPreviewBuilder() {
+ public @NonNull Preview.Builder createPreviewBuilder() {
return new Preview.Builder();
}
/** Creates a {@link Surface} instance from the specified {@link SurfaceTexture}. */
- public Surface createSurface(@NonNull SurfaceTexture surfaceTexture) {
+ public @NonNull Surface createSurface(@NonNull SurfaceTexture surfaceTexture) {
return new Surface(surfaceTexture);
}
@@ -62,7 +62,7 @@ public Surface createSurface(@NonNull SurfaceTexture surfaceTexture) {
* Included in this class to utilize the callback methods it provides, e.g. {@code
* onCameraError(String)}.
*/
- public SystemServicesFlutterApiImpl createSystemServicesFlutterApiImpl(
+ public @NonNull SystemServicesFlutterApiImpl createSystemServicesFlutterApiImpl(
@NonNull BinaryMessenger binaryMessenger) {
return new SystemServicesFlutterApiImpl(binaryMessenger);
}
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/DeviceOrientationManager.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/DeviceOrientationManager.java
index ebcb86433f65..67cac560db4d 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/DeviceOrientationManager.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/DeviceOrientationManager.java
@@ -14,6 +14,7 @@
import android.view.Surface;
import android.view.WindowManager;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import io.flutter.embedding.engine.systemchannels.PlatformChannel;
import io.flutter.embedding.engine.systemchannels.PlatformChannel.DeviceOrientation;
@@ -106,7 +107,7 @@ public int getPhotoOrientation() {
* into degrees.
* @return The device's photo orientation in degrees.
*/
- public int getPhotoOrientation(PlatformChannel.DeviceOrientation orientation) {
+ public int getPhotoOrientation(@Nullable PlatformChannel.DeviceOrientation orientation) {
int angle = 0;
// Fallback to device orientation when the orientation value is null.
if (orientation == null) {
@@ -163,7 +164,7 @@ public int getVideoOrientation() {
* into degrees.
* @return The device's video orientation in clockwise degrees.
*/
- public int getVideoOrientation(PlatformChannel.DeviceOrientation orientation) {
+ public int getVideoOrientation(@Nullable PlatformChannel.DeviceOrientation orientation) {
int angle = 0;
// Fallback to device orientation when the orientation value is null.
@@ -194,7 +195,7 @@ public int getVideoOrientation(PlatformChannel.DeviceOrientation orientation) {
}
/** @return the last received UI orientation. */
- public PlatformChannel.DeviceOrientation getLastUIOrientation() {
+ public @Nullable PlatformChannel.DeviceOrientation getLastUIOrientation() {
return this.lastOrientation;
}
@@ -236,6 +237,8 @@ static void handleOrientationChange(
*
* @return The current user interface orientation.
*/
+ // Configuration.ORIENTATION_SQUARE is deprecated.
+ @SuppressWarnings("deprecation")
@VisibleForTesting
PlatformChannel.DeviceOrientation getUIOrientation() {
final int rotation = getDisplay().getRotation();
@@ -254,6 +257,8 @@ PlatformChannel.DeviceOrientation getUIOrientation() {
} else {
return PlatformChannel.DeviceOrientation.LANDSCAPE_RIGHT;
}
+ case Configuration.ORIENTATION_SQUARE:
+ case Configuration.ORIENTATION_UNDEFINED:
default:
return PlatformChannel.DeviceOrientation.PORTRAIT_UP;
}
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageCaptureHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageCaptureHostApiImpl.java
index 0c00ed63f2f8..f2e71aa3eeee 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageCaptureHostApiImpl.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageCaptureHostApiImpl.java
@@ -27,7 +27,7 @@ public class ImageCaptureHostApiImpl implements ImageCaptureHostApi {
public static final String TEMPORARY_FILE_NAME = "CAP";
public static final String JPG_FILE_TYPE = ".jpg";
- @VisibleForTesting public CameraXProxy cameraXProxy = new CameraXProxy();
+ @VisibleForTesting public @NonNull CameraXProxy cameraXProxy = new CameraXProxy();
public ImageCaptureHostApiImpl(
@NonNull BinaryMessenger binaryMessenger,
@@ -42,7 +42,7 @@ public ImageCaptureHostApiImpl(
* Sets the context that the {@link ImageCapture} will use to find a location to save a captured
* image.
*/
- public void setContext(Context context) {
+ public void setContext(@NonNull Context context) {
this.context = context;
}
@@ -101,7 +101,7 @@ public void takePicture(
/** Creates a callback used when saving a captured image. */
@VisibleForTesting
- public ImageCapture.OnImageSavedCallback createOnImageSavedCallback(
+ public @NonNull ImageCapture.OnImageSavedCallback createOnImageSavedCallback(
@NonNull File file, @NonNull GeneratedCameraXLibrary.Result result) {
return new ImageCapture.OnImageSavedCallback() {
@Override
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/InstanceManager.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/InstanceManager.java
index 788d54f668a0..97ab805370df 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/InstanceManager.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/InstanceManager.java
@@ -67,7 +67,7 @@ public interface FinalizationListener {
* @return a new `InstanceManager`.
*/
@NonNull
- public static InstanceManager create(FinalizationListener finalizationListener) {
+ public static InstanceManager create(@NonNull FinalizationListener finalizationListener) {
return new InstanceManager(finalizationListener);
}
@@ -109,7 +109,7 @@ public T remove(long identifier) {
* `null` if the manager doesn't contain the value.
*/
@Nullable
- public Long getIdentifierForStrongReference(Object instance) {
+ public Long getIdentifierForStrongReference(@Nullable Object instance) {
logWarningIfFinalizationListenerHasStopped();
final Long identifier = identifiers.get(instance);
@@ -130,7 +130,7 @@ public Long getIdentifierForStrongReference(Object instance) {
* @param identifier the identifier to be paired with instance. This value must be >= 0 and
* unique.
*/
- public void addDartCreatedInstance(Object instance, long identifier) {
+ public void addDartCreatedInstance(@NonNull Object instance, long identifier) {
logWarningIfFinalizationListenerHasStopped();
addInstance(instance, identifier);
}
@@ -141,7 +141,7 @@ public void addDartCreatedInstance(Object instance, long identifier) {
* @param instance the instance to be stored. This must be unique to all other added instances.
* @return the unique identifier (>= 0) stored with instance.
*/
- public long addHostCreatedInstance(Object instance) {
+ public long addHostCreatedInstance(@NonNull Object instance) {
logWarningIfFinalizationListenerHasStopped();
if (containsInstance(instance)) {
@@ -178,7 +178,7 @@ public T getInstance(long identifier) {
* @param instance the instance whose presence in this manager is to be tested.
* @return whether this manager contains the given `instance`.
*/
- public boolean containsInstance(Object instance) {
+ public boolean containsInstance(@Nullable Object instance) {
logWarningIfFinalizationListenerHasStopped();
return identifiers.containsKey(instance);
}
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/JavaObjectHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/JavaObjectHostApiImpl.java
index 5dc0ba7fc8ba..538d4542cf4b 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/JavaObjectHostApiImpl.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/JavaObjectHostApiImpl.java
@@ -22,7 +22,7 @@ public class JavaObjectHostApiImpl implements JavaObjectHostApi {
*
* @param instanceManager maintains instances stored to communicate with Dart objects
*/
- public JavaObjectHostApiImpl(InstanceManager instanceManager) {
+ public JavaObjectHostApiImpl(@NonNull InstanceManager instanceManager) {
this.instanceManager = instanceManager;
}
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewHostApiImpl.java
index e89b4bc9eaba..6f93fd0f87cb 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewHostApiImpl.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewHostApiImpl.java
@@ -19,12 +19,12 @@
import java.util.concurrent.Executors;
public class PreviewHostApiImpl implements PreviewHostApi {
- private final BinaryMessenger binaryMessenger;
+ final BinaryMessenger binaryMessenger;
private final InstanceManager instanceManager;
private final TextureRegistry textureRegistry;
- @VisibleForTesting public CameraXProxy cameraXProxy = new CameraXProxy();
- @VisibleForTesting public TextureRegistry.SurfaceTextureEntry flutterSurfaceTexture;
+ @VisibleForTesting public @NonNull CameraXProxy cameraXProxy = new CameraXProxy();
+ @VisibleForTesting public @Nullable TextureRegistry.SurfaceTextureEntry flutterSurfaceTexture;
public PreviewHostApiImpl(
@NonNull BinaryMessenger binaryMessenger,
@@ -57,7 +57,7 @@ public void create(
* by a Flutter {@link TextureRegistry.SurfaceTextureEntry} used to build the {@link Preview}.
*/
@Override
- public Long setSurfaceProvider(@NonNull Long identifier) {
+ public @NonNull Long setSurfaceProvider(@NonNull Long identifier) {
Preview preview = (Preview) Objects.requireNonNull(instanceManager.getInstance(identifier));
flutterSurfaceTexture = textureRegistry.createSurfaceTexture();
SurfaceTexture surfaceTexture = flutterSurfaceTexture.surfaceTexture();
@@ -72,10 +72,11 @@ public Long setSurfaceProvider(@NonNull Long identifier) {
* {@code Preview} that is backed by a Flutter {@link TextureRegistry.SurfaceTextureEntry}.
*/
@VisibleForTesting
- public Preview.SurfaceProvider createSurfaceProvider(@NonNull SurfaceTexture surfaceTexture) {
+ public @NonNull Preview.SurfaceProvider createSurfaceProvider(
+ @NonNull SurfaceTexture surfaceTexture) {
return new Preview.SurfaceProvider() {
@Override
- public void onSurfaceRequested(SurfaceRequest request) {
+ public void onSurfaceRequested(@NonNull SurfaceRequest request) {
surfaceTexture.setDefaultBufferSize(
request.getResolution().getWidth(), request.getResolution().getHeight());
Surface flutterSurface = cameraXProxy.createSurface(surfaceTexture);
@@ -106,7 +107,7 @@ public void onSurfaceRequested(SurfaceRequest request) {
break;
}
});
- };
+ }
};
}
@@ -114,7 +115,7 @@ public void onSurfaceRequested(SurfaceRequest request) {
* Returns an error description for each {@link SurfaceRequest.Result} that represents an error
* with providing a surface.
*/
- private String getProvideSurfaceErrorDescription(int resultCode) {
+ String getProvideSurfaceErrorDescription(int resultCode) {
switch (resultCode) {
case SurfaceRequest.Result.RESULT_INVALID_SURFACE:
return resultCode + ": Provided surface could not be used by the camera.";
@@ -136,7 +137,8 @@ public void releaseFlutterSurfaceTexture() {
/** Returns the resolution information for the specified {@link Preview}. */
@Override
- public GeneratedCameraXLibrary.ResolutionInfo getResolutionInfo(@NonNull Long identifier) {
+ public @NonNull GeneratedCameraXLibrary.ResolutionInfo getResolutionInfo(
+ @NonNull Long identifier) {
Preview preview = (Preview) Objects.requireNonNull(instanceManager.getInstance(identifier));
Size resolution = preview.getResolutionInfo().getResolution();
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderFlutterApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderFlutterApiImpl.java
index 90c94d0c26cb..35e2bc0ec73c 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderFlutterApiImpl.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderFlutterApiImpl.java
@@ -4,13 +4,14 @@
package io.flutter.plugins.camerax;
+import androidx.annotation.NonNull;
import androidx.camera.lifecycle.ProcessCameraProvider;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugins.camerax.GeneratedCameraXLibrary.ProcessCameraProviderFlutterApi;
public class ProcessCameraProviderFlutterApiImpl extends ProcessCameraProviderFlutterApi {
public ProcessCameraProviderFlutterApiImpl(
- BinaryMessenger binaryMessenger, InstanceManager instanceManager) {
+ @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) {
super(binaryMessenger);
this.instanceManager = instanceManager;
}
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderHostApiImpl.java
index 7d72dee31eab..9292ee93fc43 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderHostApiImpl.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderHostApiImpl.java
@@ -28,13 +28,15 @@ public class ProcessCameraProviderHostApiImpl implements ProcessCameraProviderHo
private LifecycleOwner lifecycleOwner;
public ProcessCameraProviderHostApiImpl(
- BinaryMessenger binaryMessenger, InstanceManager instanceManager, Context context) {
+ @NonNull BinaryMessenger binaryMessenger,
+ @NonNull InstanceManager instanceManager,
+ @NonNull Context context) {
this.binaryMessenger = binaryMessenger;
this.instanceManager = instanceManager;
this.context = context;
}
- public void setLifecycleOwner(LifecycleOwner lifecycleOwner) {
+ public void setLifecycleOwner(@NonNull LifecycleOwner lifecycleOwner) {
this.lifecycleOwner = lifecycleOwner;
}
@@ -45,7 +47,7 @@ public void setLifecycleOwner(LifecycleOwner lifecycleOwner) {
* If using the camera plugin in an add-to-app context, ensure that a new instance of the
* {@code ProcessCameraProvider} is fetched via {@code #getInstance} anytime the context changes.
*/
- public void setContext(Context context) {
+ public void setContext(@NonNull Context context) {
this.context = context;
}
@@ -54,7 +56,7 @@ public void setContext(Context context) {
* for the current {@code Context}.
*/
@Override
- public void getInstance(GeneratedCameraXLibrary.Result result) {
+ public void getInstance(@NonNull GeneratedCameraXLibrary.Result result) {
ListenableFuture processCameraProviderFuture =
ProcessCameraProvider.getInstance(context);
@@ -78,13 +80,14 @@ public void getInstance(GeneratedCameraXLibrary.Result result) {
}
/** Returns cameras available to the {@code ProcessCameraProvider}. */
+ @NonNull
@Override
public List getAvailableCameraInfos(@NonNull Long identifier) {
ProcessCameraProvider processCameraProvider =
(ProcessCameraProvider) Objects.requireNonNull(instanceManager.getInstance(identifier));
List availableCameras = processCameraProvider.getAvailableCameraInfos();
- List availableCamerasIds = new ArrayList();
+ List availableCamerasIds = new ArrayList<>();
final CameraInfoFlutterApiImpl cameraInfoFlutterApi =
new CameraInfoFlutterApiImpl(binaryMessenger, instanceManager);
@@ -103,7 +106,7 @@ public List getAvailableCameraInfos(@NonNull Long identifier) {
* that {@code LifecycleOwner} reflects.
*/
@Override
- public Long bindToLifecycle(
+ public @NonNull Long bindToLifecycle(
@NonNull Long identifier,
@NonNull Long cameraSelectorIdentifier,
@NonNull List useCaseIds) {
@@ -128,11 +131,11 @@ public Long bindToLifecycle(
cameraFlutterApi.create(camera, result -> {});
}
- return instanceManager.getIdentifierForStrongReference(camera);
+ return Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(camera));
}
@Override
- public Boolean isBound(@NonNull Long identifier, @NonNull Long useCaseIdentifier) {
+ public @NonNull Boolean isBound(@NonNull Long identifier, @NonNull Long useCaseIdentifier) {
ProcessCameraProvider processCameraProvider =
(ProcessCameraProvider) Objects.requireNonNull(instanceManager.getInstance(identifier));
UseCase useCase =
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java
index ffd387e181e6..b8f4d6b0c62d 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java
@@ -7,6 +7,7 @@
import android.app.Activity;
import android.content.Context;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import io.flutter.embedding.engine.systemchannels.PlatformChannel.DeviceOrientation;
import io.flutter.plugin.common.BinaryMessenger;
@@ -23,15 +24,17 @@ public class SystemServicesHostApiImpl implements SystemServicesHostApi {
private final InstanceManager instanceManager;
private Context context;
- @VisibleForTesting public CameraXProxy cameraXProxy = new CameraXProxy();
- @VisibleForTesting public DeviceOrientationManager deviceOrientationManager;
- @VisibleForTesting public SystemServicesFlutterApiImpl systemServicesFlutterApi;
+ @VisibleForTesting public @NonNull CameraXProxy cameraXProxy = new CameraXProxy();
+ @VisibleForTesting public @Nullable DeviceOrientationManager deviceOrientationManager;
+ @VisibleForTesting public @NonNull SystemServicesFlutterApiImpl systemServicesFlutterApi;
private Activity activity;
private PermissionsRegistry permissionsRegistry;
public SystemServicesHostApiImpl(
- BinaryMessenger binaryMessenger, InstanceManager instanceManager, Context context) {
+ @NonNull BinaryMessenger binaryMessenger,
+ @NonNull InstanceManager instanceManager,
+ @NonNull Context context) {
this.binaryMessenger = binaryMessenger;
this.instanceManager = instanceManager;
this.context = context;
@@ -39,15 +42,15 @@ public SystemServicesHostApiImpl(
}
/** Sets the context, which is used to get the cache directory. */
- public void setContext(Context context) {
+ public void setContext(@NonNull Context context) {
this.context = context;
}
- public void setActivity(Activity activity) {
+ public void setActivity(@NonNull Activity activity) {
this.activity = activity;
}
- public void setPermissionsRegistry(PermissionsRegistry permissionsRegistry) {
+ public void setPermissionsRegistry(@NonNull PermissionsRegistry permissionsRegistry) {
this.permissionsRegistry = permissionsRegistry;
}
@@ -59,7 +62,7 @@ public void setPermissionsRegistry(PermissionsRegistry permissionsRegistry) {
*/
@Override
public void requestCameraPermissions(
- Boolean enableAudio, Result result) {
+ @NonNull Boolean enableAudio, @NonNull Result result) {
CameraPermissionsManager cameraPermissionsManager =
cameraXProxy.createCameraPermissionsManager();
cameraPermissionsManager.requestPermissions(
diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml
index 7c5776663234..97a95def2e09 100644
--- a/packages/camera/camera_android_camerax/pubspec.yaml
+++ b/packages/camera/camera_android_camerax/pubspec.yaml
@@ -3,7 +3,7 @@ description: Android implementation of the camera plugin using the CameraX libra
repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android_camerax
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.5.0+2
+version: 0.5.0+3
environment:
sdk: ">=2.19.0 <4.0.0"