From 4b3fc19dca1183692ee1baefc6749ef3e87736eb Mon Sep 17 00:00:00 2001 From: Danang Rahmatullah Date: Fri, 24 Oct 2025 20:07:55 +0200 Subject: [PATCH 1/7] add targetFps --- .../plugins/camerax/CameraXLibrary.g.kt | 1427 +++++++++++------ .../camerax/ImageAnalysisProxyApi.java | 15 + .../plugins/camerax/PreviewProxyApi.java | 19 +- .../plugins/camerax/VideoCaptureProxyApi.java | 22 +- .../plugins/camerax/ImageAnalysisTest.java | 3 +- .../flutter/plugins/camerax/PreviewTest.java | 3 +- .../plugins/camerax/VideoCaptureTest.java | 15 +- .../example/lib/camera_controller.dart | 3 +- .../lib/src/android_camera_camerax.dart | 12 +- .../lib/src/camerax_library.g.dart | 12 +- .../lib/src/camerax_proxy.dart | 3 + .../pigeons/camerax_library.dart | 7 +- .../test/android_camera_camerax_test.dart | 28 + .../android_camera_camerax_test.mocks.dart | 48 + .../test/preview_rotation_test.dart | 3 + 15 files changed, 1091 insertions(+), 529 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt index c08f52606d5..b98436c0248 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt @@ -19,7 +19,10 @@ private object CameraXLibraryPigeonUtils { fun createConnectionError(channelName: String): CameraXError { return CameraXError( - "channel-error", "Unable to establish connection on channel: '$channelName'.", "") + "channel-error", + "Unable to establish connection on channel: '$channelName'.", + "", + ) } fun wrapResult(result: Any?): List { @@ -33,7 +36,8 @@ private object CameraXLibraryPigeonUtils { listOf( exception.javaClass.simpleName, exception.toString(), - "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception)) + "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception), + ) } } } @@ -48,8 +52,9 @@ private object CameraXLibraryPigeonUtils { class CameraXError( val code: String, override val message: String? = null, - val details: Any? = null + val details: Any? = null, ) : Throwable() + /** * Maintains instances used to communicate with the corresponding objects in Dart. * @@ -233,8 +238,9 @@ class CameraXLibraryPigeonInstanceManager( return } var reference: java.lang.ref.WeakReference? - while ((referenceQueue.poll() as java.lang.ref.WeakReference?).also { reference = it } != - null) { + while ( + (referenceQueue.poll() as java.lang.ref.WeakReference?).also { reference = it } != null + ) { val identifier = weakReferencesToIdentifiers.remove(reference) if (identifier != null) { weakInstances.remove(identifier) @@ -261,7 +267,8 @@ class CameraXLibraryPigeonInstanceManager( if (hasFinalizationListenerStopped()) { Log.w( tag, - "The manager was used after calls to the PigeonFinalizationListener has been stopped.") + "The manager was used after calls to the PigeonFinalizationListener has been stopped.", + ) } } } @@ -278,14 +285,15 @@ private class CameraXLibraryPigeonInstanceManagerApi(val binaryMessenger: Binary */ fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - instanceManager: CameraXLibraryPigeonInstanceManager? + instanceManager: CameraXLibraryPigeonInstanceManager?, ) { run { val channel = BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.PigeonInternalInstanceManager.removeStrongReference", - codec) + codec, + ) if (instanceManager != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -308,7 +316,8 @@ private class CameraXLibraryPigeonInstanceManagerApi(val binaryMessenger: Binary BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.PigeonInternalInstanceManager.clear", - codec) + codec, + ) if (instanceManager != null) { channel.setMessageHandler { _, reply -> val wrapped: List = @@ -344,6 +353,7 @@ private class CameraXLibraryPigeonInstanceManagerApi(val binaryMessenger: Binary } } } + /** * Provides implementations for each ProxyApi implementation and provides access to resources needed * by any implementation. @@ -371,12 +381,15 @@ abstract class CameraXLibraryPigeonProxyApiRegistrar(val binaryMessenger: Binary if (it.isFailure) { Log.e( "PigeonProxyApiRegistrar", - "Failed to remove Dart strong reference with identifier: $identifier") + "Failed to remove Dart strong reference with identifier: $identifier", + ) } } } - }) + } + ) } + /** * An implementation of [PigeonApiCameraSize] used to add a new Dart instance of `CameraSize` to * the Dart `InstanceManager`. @@ -714,32 +727,48 @@ abstract class CameraXLibraryPigeonProxyApiRegistrar(val binaryMessenger: Binary CameraXLibraryPigeonInstanceManagerApi.setUpMessageHandlers(binaryMessenger, instanceManager) PigeonApiCameraSize.setUpMessageHandlers(binaryMessenger, getPigeonApiCameraSize()) PigeonApiCameraIntegerRange.setUpMessageHandlers( - binaryMessenger, getPigeonApiCameraIntegerRange()) + binaryMessenger, + getPigeonApiCameraIntegerRange(), + ) PigeonApiMeteringPoint.setUpMessageHandlers(binaryMessenger, getPigeonApiMeteringPoint()) PigeonApiObserver.setUpMessageHandlers(binaryMessenger, getPigeonApiObserver()) PigeonApiCameraInfo.setUpMessageHandlers(binaryMessenger, getPigeonApiCameraInfo()) PigeonApiCameraSelector.setUpMessageHandlers(binaryMessenger, getPigeonApiCameraSelector()) PigeonApiProcessCameraProvider.setUpMessageHandlers( - binaryMessenger, getPigeonApiProcessCameraProvider()) + binaryMessenger, + getPigeonApiProcessCameraProvider(), + ) PigeonApiCamera.setUpMessageHandlers(binaryMessenger, getPigeonApiCamera()) PigeonApiSystemServicesManager.setUpMessageHandlers( - binaryMessenger, getPigeonApiSystemServicesManager()) + binaryMessenger, + getPigeonApiSystemServicesManager(), + ) PigeonApiDeviceOrientationManager.setUpMessageHandlers( - binaryMessenger, getPigeonApiDeviceOrientationManager()) + binaryMessenger, + getPigeonApiDeviceOrientationManager(), + ) PigeonApiPreview.setUpMessageHandlers(binaryMessenger, getPigeonApiPreview()) PigeonApiVideoCapture.setUpMessageHandlers(binaryMessenger, getPigeonApiVideoCapture()) PigeonApiRecorder.setUpMessageHandlers(binaryMessenger, getPigeonApiRecorder()) PigeonApiVideoRecordEventListener.setUpMessageHandlers( - binaryMessenger, getPigeonApiVideoRecordEventListener()) + binaryMessenger, + getPigeonApiVideoRecordEventListener(), + ) PigeonApiPendingRecording.setUpMessageHandlers(binaryMessenger, getPigeonApiPendingRecording()) PigeonApiRecording.setUpMessageHandlers(binaryMessenger, getPigeonApiRecording()) PigeonApiImageCapture.setUpMessageHandlers(binaryMessenger, getPigeonApiImageCapture()) PigeonApiResolutionStrategy.setUpMessageHandlers( - binaryMessenger, getPigeonApiResolutionStrategy()) + binaryMessenger, + getPigeonApiResolutionStrategy(), + ) PigeonApiResolutionSelector.setUpMessageHandlers( - binaryMessenger, getPigeonApiResolutionSelector()) + binaryMessenger, + getPigeonApiResolutionSelector(), + ) PigeonApiAspectRatioStrategy.setUpMessageHandlers( - binaryMessenger, getPigeonApiAspectRatioStrategy()) + binaryMessenger, + getPigeonApiAspectRatioStrategy(), + ) PigeonApiImageAnalysis.setUpMessageHandlers(binaryMessenger, getPigeonApiImageAnalysis()) PigeonApiAnalyzer.setUpMessageHandlers(binaryMessenger, getPigeonApiAnalyzer()) PigeonApiLiveData.setUpMessageHandlers(binaryMessenger, getPigeonApiLiveData()) @@ -749,21 +778,35 @@ abstract class CameraXLibraryPigeonProxyApiRegistrar(val binaryMessenger: Binary PigeonApiFallbackStrategy.setUpMessageHandlers(binaryMessenger, getPigeonApiFallbackStrategy()) PigeonApiCameraControl.setUpMessageHandlers(binaryMessenger, getPigeonApiCameraControl()) PigeonApiFocusMeteringActionBuilder.setUpMessageHandlers( - binaryMessenger, getPigeonApiFocusMeteringActionBuilder()) + binaryMessenger, + getPigeonApiFocusMeteringActionBuilder(), + ) PigeonApiCaptureRequest.setUpMessageHandlers(binaryMessenger, getPigeonApiCaptureRequest()) PigeonApiCaptureRequestOptions.setUpMessageHandlers( - binaryMessenger, getPigeonApiCaptureRequestOptions()) + binaryMessenger, + getPigeonApiCaptureRequestOptions(), + ) PigeonApiCamera2CameraControl.setUpMessageHandlers( - binaryMessenger, getPigeonApiCamera2CameraControl()) + binaryMessenger, + getPigeonApiCamera2CameraControl(), + ) PigeonApiResolutionFilter.setUpMessageHandlers(binaryMessenger, getPigeonApiResolutionFilter()) PigeonApiCameraCharacteristics.setUpMessageHandlers( - binaryMessenger, getPigeonApiCameraCharacteristics()) + binaryMessenger, + getPigeonApiCameraCharacteristics(), + ) PigeonApiCamera2CameraInfo.setUpMessageHandlers( - binaryMessenger, getPigeonApiCamera2CameraInfo()) + binaryMessenger, + getPigeonApiCamera2CameraInfo(), + ) PigeonApiMeteringPointFactory.setUpMessageHandlers( - binaryMessenger, getPigeonApiMeteringPointFactory()) + binaryMessenger, + getPigeonApiMeteringPointFactory(), + ) PigeonApiDisplayOrientedMeteringPointFactory.setUpMessageHandlers( - binaryMessenger, getPigeonApiDisplayOrientedMeteringPointFactory()) + binaryMessenger, + getPigeonApiDisplayOrientedMeteringPointFactory(), + ) } fun tearDown() { @@ -821,35 +864,38 @@ private class CameraXLibraryPigeonProxyApiBaseCodec( } return instance } + else -> super.readValueOfType(type, buffer) } } override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { - if (value is Boolean || - value is ByteArray || - value is Double || - value is DoubleArray || - value is FloatArray || - value is Int || - value is IntArray || - value is List<*> || - value is Long || - value is LongArray || - value is Map<*, *> || - value is String || - value is InfoSupportedHardwareLevel || - value is AspectRatio || - value is CameraStateType || - value is LiveDataSupportedType || - value is VideoQuality || - value is MeteringMode || - value is LensFacing || - value is CameraXFlashMode || - value is ResolutionStrategyFallbackRule || - value is AspectRatioStrategyFallbackRule || - value is CameraStateErrorCode || - value == null) { + if ( + value is Boolean || + value is ByteArray || + value is Double || + value is DoubleArray || + value is FloatArray || + value is Int || + value is IntArray || + value is List<*> || + value is Long || + value is LongArray || + value is Map<*, *> || + value is String || + value is InfoSupportedHardwareLevel || + value is AspectRatio || + value is CameraStateType || + value is LiveDataSupportedType || + value is VideoQuality || + value is MeteringMode || + value is LensFacing || + value is CameraXFlashMode || + value is ResolutionStrategyFallbackRule || + value is AspectRatioStrategyFallbackRule || + value is CameraStateErrorCode || + value == null + ) { super.writeValue(stream, value) return } @@ -967,9 +1013,11 @@ private class CameraXLibraryPigeonProxyApiBaseCodec( stream.write(128) writeValue(stream, registrar.instanceManager.getIdentifierForStrongReference(value)) } + else -> throw IllegalArgumentException( - "Unsupported value: '$value' of type '${value.javaClass.name}'") + "Unsupported value: '$value' of type '${value.javaClass.name}'" + ) } } } @@ -986,12 +1034,16 @@ enum class InfoSupportedHardwareLevel(val raw: Int) { * FULL-level capabilities. */ LEVEL3(0), + /** This camera device is backed by an external camera connected to this Android device. */ EXTERNAL(1), + /** This camera device is capable of supporting advanced imaging applications. */ FULL(2), + /** This camera device is running in backward compatibility mode. */ LEGACY(3), + /** This camera device does not have enough capabilities to qualify as a FULL device or better. */ LIMITED(4); @@ -1010,10 +1062,13 @@ enum class InfoSupportedHardwareLevel(val raw: Int) { enum class AspectRatio(val raw: Int) { /** 16:9 standard aspect ratio. */ RATIO16TO9(0), + /** 4:3 standard aspect ratio. */ RATIO4TO3(1), + /** The aspect ratio representing no preference for aspect ratio. */ RATIO_DEFAULT(2), + /** The value is not recognized by the wrapper. */ UNKNOWN(3); @@ -1032,17 +1087,22 @@ enum class AspectRatio(val raw: Int) { enum class CameraStateType(val raw: Int) { /** Represents a state where the camera device is closed. */ CLOSED(0), + /** Represents a state where the camera device is currently closing. */ CLOSING(1), + /** Represents a state where the camera device is open. */ OPEN(2), + /** Represents a state where the camera device is currently opening. */ OPENING(3), + /** * Represents a state where the camera is waiting for a signal to attempt to open the camera * device. */ PENDING_OPEN(4), + /** This value is not recognized by this wrapper. */ UNKNOWN(5); @@ -1076,14 +1136,19 @@ enum class LiveDataSupportedType(val raw: Int) { enum class VideoQuality(val raw: Int) { /** Standard Definition (SD) 480p video quality. */ SD(0), + /** High Definition (HD) 720p video quality. */ HD(1), + /** Full High Definition (FHD) 1080p video quality. */ FHD(2), + /** Ultra High Definition (UHD) 2160p video quality. */ UHD(3), + /** The lowest video quality supported by the video frame producer. */ LOWEST(4), + /** The highest video quality supported by the video frame producer. */ HIGHEST(5); @@ -1103,8 +1168,10 @@ enum class VideoQuality(val raw: Int) { enum class MeteringMode(val raw: Int) { /** A flag used in metering mode indicating the AE (Auto Exposure) region is enabled. */ AE(0), + /** A flag used in metering mode indicating the AF (Auto Focus) region is enabled. */ AF(1), + /** A flag used in metering mode indicating the AWB (Auto White Balance) region is enabled. */ AWB(2); @@ -1124,10 +1191,13 @@ enum class MeteringMode(val raw: Int) { enum class LensFacing(val raw: Int) { /** A camera on the device facing the same direction as the device's screen. */ FRONT(0), + /** A camera on the device facing the opposite direction as the device's screen. */ BACK(1), + /** An external camera that has no fixed facing relative to the device's screen. */ EXTERNAL(2), + /** A camera on the devices that its lens facing is resolved. */ UNKNOWN(3); @@ -1151,12 +1221,14 @@ enum class CameraXFlashMode(val raw: Int) { * The flash will be used according to the camera system's determination when taking a picture. */ AUTO(0), + /** * No flash. * * The flash will never be used when taking a picture. */ OFF(1), + /** * Always flash. * @@ -1183,16 +1255,19 @@ enum class ResolutionStrategyFallbackRule(val raw: Int) { * resolution size. */ CLOSEST_HIGHER(0), + /** * When the specified bound size is unavailable, CameraX falls back to select the closest higher * resolution size. */ CLOSEST_HIGHER_THEN_LOWER(1), + /** * When the specified bound size is unavailable, CameraX falls back to the closest lower * resolution size. */ CLOSEST_LOWER(2), + /** * When the specified bound size is unavailable, CameraX falls back to select the closest lower * resolution size. @@ -1201,8 +1276,10 @@ enum class ResolutionStrategyFallbackRule(val raw: Int) { * resolutions. */ CLOSEST_LOWER_THEN_HIGHER(3), + /** CameraX doesn't select an alternate size when the specified bound size is unavailable. */ NONE(4), + /** The value is not recognized by the wrapper. */ UNKNOWN(5); @@ -1225,11 +1302,13 @@ enum class AspectRatioStrategyFallbackRule(val raw: Int) { * view (FOV) of the camera sensor, from the remaining options. */ AUTO(0), + /** * CameraX doesn't fall back to select sizes of any other aspect ratio when this fallback rule is * used. */ NONE(1), + /** The value is not recognized by the wrapper. */ UNKNOWN(2); @@ -1248,24 +1327,31 @@ enum class AspectRatioStrategyFallbackRule(val raw: Int) { enum class CameraStateErrorCode(val raw: Int) { /** An error indicating that the camera device could not be opened due to a device policy. */ CAMERA_DISABLED(0), + /** An error indicating that the camera device was closed due to a fatal error. */ CAMERA_FATAL_ERROR(1), + /** An error indicating that the camera device is already in use. */ CAMERA_IN_USE(2), + /** * An error indicating that the camera could not be opened because "Do Not Disturb" mode is * enabled on devices affected by a bug in Android 9 (API level 28). */ DO_NOT_DISTURB_MODE_ENABLED(3), + /** * An error indicating that the limit number of open cameras has been reached, and more cameras * cannot be opened until other instances are closed. */ MAX_CAMERAS_IN_USE(4), + /** An error indicating that the camera device has encountered a recoverable error. */ OTHER_RECOVERABLE_ERROR(5), + /** An error indicating that configuring the camera has failed. */ STREAM_CONFIG(6), + /** The value is not recognized by this wrapper. */ UNKNOWN(7); @@ -1282,40 +1368,51 @@ private open class CameraXLibraryPigeonCodec : StandardMessageCodec() { 129.toByte() -> { return (readValue(buffer) as Long?)?.let { InfoSupportedHardwareLevel.ofRaw(it.toInt()) } } + 130.toByte() -> { return (readValue(buffer) as Long?)?.let { AspectRatio.ofRaw(it.toInt()) } } + 131.toByte() -> { return (readValue(buffer) as Long?)?.let { CameraStateType.ofRaw(it.toInt()) } } + 132.toByte() -> { return (readValue(buffer) as Long?)?.let { LiveDataSupportedType.ofRaw(it.toInt()) } } + 133.toByte() -> { return (readValue(buffer) as Long?)?.let { VideoQuality.ofRaw(it.toInt()) } } + 134.toByte() -> { return (readValue(buffer) as Long?)?.let { MeteringMode.ofRaw(it.toInt()) } } + 135.toByte() -> { return (readValue(buffer) as Long?)?.let { LensFacing.ofRaw(it.toInt()) } } + 136.toByte() -> { return (readValue(buffer) as Long?)?.let { CameraXFlashMode.ofRaw(it.toInt()) } } + 137.toByte() -> { return (readValue(buffer) as Long?)?.let { ResolutionStrategyFallbackRule.ofRaw(it.toInt()) } } + 138.toByte() -> { return (readValue(buffer) as Long?)?.let { AspectRatioStrategyFallbackRule.ofRaw(it.toInt()) } } + 139.toByte() -> { return (readValue(buffer) as Long?)?.let { CameraStateErrorCode.ofRaw(it.toInt()) } } + else -> super.readValueOfType(type, buffer) } } @@ -1326,46 +1423,57 @@ private open class CameraXLibraryPigeonCodec : StandardMessageCodec() { stream.write(129) writeValue(stream, value.raw) } + is AspectRatio -> { stream.write(130) writeValue(stream, value.raw) } + is CameraStateType -> { stream.write(131) writeValue(stream, value.raw) } + is LiveDataSupportedType -> { stream.write(132) writeValue(stream, value.raw) } + is VideoQuality -> { stream.write(133) writeValue(stream, value.raw) } + is MeteringMode -> { stream.write(134) writeValue(stream, value.raw) } + is LensFacing -> { stream.write(135) writeValue(stream, value.raw) } + is CameraXFlashMode -> { stream.write(136) writeValue(stream, value.raw) } + is ResolutionStrategyFallbackRule -> { stream.write(137) writeValue(stream, value.raw) } + is AspectRatioStrategyFallbackRule -> { stream.write(138) writeValue(stream, value.raw) } + is CameraStateErrorCode -> { stream.write(139) writeValue(stream, value.raw) } + else -> super.writeValue(stream, value) } } @@ -1397,7 +1505,8 @@ abstract class PigeonApiCameraSize( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraSize.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -1407,7 +1516,9 @@ abstract class PigeonApiCameraSize( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(widthArg, heightArg), pigeon_identifierArg) + api.pigeon_defaultConstructor(widthArg, heightArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -1426,8 +1537,8 @@ abstract class PigeonApiCameraSize( fun pigeon_newInstance(pigeon_instanceArg: android.util.Size, callback: (Result) -> Unit) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1443,7 +1554,8 @@ abstract class PigeonApiCameraSize( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -1454,6 +1566,7 @@ abstract class PigeonApiCameraSize( } } } + /** * A `ResolutionInfo` allows the application to know the resolution information of a specific use * case. @@ -1471,12 +1584,12 @@ abstract class PigeonApiResolutionInfo( /** Creates a Dart instance of ResolutionInfo and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.ResolutionInfo, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1492,7 +1605,8 @@ abstract class PigeonApiResolutionInfo( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -1503,6 +1617,7 @@ abstract class PigeonApiResolutionInfo( } } } + /** * Immutable class for describing the range of two integer values. * @@ -1531,7 +1646,8 @@ abstract class PigeonApiCameraIntegerRange( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraIntegerRange.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -1541,7 +1657,9 @@ abstract class PigeonApiCameraIntegerRange( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(lowerArg, upperArg), pigeon_identifierArg) + api.pigeon_defaultConstructor(lowerArg, upperArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -1559,12 +1677,12 @@ abstract class PigeonApiCameraIntegerRange( /** Creates a Dart instance of CameraIntegerRange and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: android.util.Range<*>, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1581,7 +1699,8 @@ abstract class PigeonApiCameraIntegerRange( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -1592,6 +1711,7 @@ abstract class PigeonApiCameraIntegerRange( } } } + /** * VideoRecordEvent is used to report video recording events and status. * @@ -1605,12 +1725,12 @@ open class PigeonApiVideoRecordEvent( /** Creates a Dart instance of VideoRecordEvent and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.VideoRecordEvent, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1625,7 +1745,8 @@ open class PigeonApiVideoRecordEvent( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -1636,6 +1757,7 @@ open class PigeonApiVideoRecordEvent( } } } + /** * Indicates the start of recording. * @@ -1649,12 +1771,12 @@ open class PigeonApiVideoRecordEventStart( /** Creates a Dart instance of VideoRecordEventStart and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.VideoRecordEvent.Start, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1669,7 +1791,8 @@ open class PigeonApiVideoRecordEventStart( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -1686,6 +1809,7 @@ open class PigeonApiVideoRecordEventStart( return pigeonRegistrar.getPigeonApiVideoRecordEvent() } } + /** * Indicates the finalization of recording. * @@ -1701,12 +1825,12 @@ open class PigeonApiVideoRecordEventFinalize( */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.VideoRecordEvent.Finalize, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1721,7 +1845,8 @@ open class PigeonApiVideoRecordEventFinalize( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -1738,6 +1863,7 @@ open class PigeonApiVideoRecordEventFinalize( return pigeonRegistrar.getPigeonApiVideoRecordEvent() } } + /** * A MeteringPoint is used to specify a region which can then be converted to sensor coordinate * system for focus and metering purpose. @@ -1765,7 +1891,8 @@ abstract class PigeonApiMeteringPoint( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.MeteringPoint.getSize", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -1789,12 +1916,12 @@ abstract class PigeonApiMeteringPoint( /** Creates a Dart instance of MeteringPoint and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.MeteringPoint, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1808,7 +1935,8 @@ abstract class PigeonApiMeteringPoint( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -1819,6 +1947,7 @@ abstract class PigeonApiMeteringPoint( } } } + /** * A simple callback that can receive from LiveData. * @@ -1837,7 +1966,8 @@ abstract class PigeonApiObserver(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Observer.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -1845,7 +1975,9 @@ abstract class PigeonApiObserver(open val pigeonRegistrar: CameraXLibraryPigeonP val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(), pigeon_identifierArg) + api.pigeon_defaultConstructor(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -1863,12 +1995,12 @@ abstract class PigeonApiObserver(open val pigeonRegistrar: CameraXLibraryPigeonP /** Creates a Dart instance of Observer and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.lifecycle.Observer<*>, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1877,7 +2009,10 @@ abstract class PigeonApiObserver(open val pigeonRegistrar: CameraXLibraryPigeonP CameraXError( "new-instance-error", "Attempting to create a new Dart instance of Observer, but the class has a nonnull callback method.", - ""))) + "", + ) + ) + ) } } @@ -1885,12 +2020,12 @@ abstract class PigeonApiObserver(open val pigeonRegistrar: CameraXLibraryPigeonP fun onChanged( pigeon_instanceArg: androidx.lifecycle.Observer<*>, valueArg: Any, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -1910,6 +2045,7 @@ abstract class PigeonApiObserver(open val pigeonRegistrar: CameraXLibraryPigeonP } } } + /** * An interface for retrieving camera information. * @@ -1949,7 +2085,8 @@ abstract class PigeonApiCameraInfo( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraInfo.getCameraState", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -1971,7 +2108,8 @@ abstract class PigeonApiCameraInfo( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraInfo.getZoomState", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -1995,12 +2133,12 @@ abstract class PigeonApiCameraInfo( /** Creates a Dart instance of CameraInfo and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.CameraInfo, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2016,7 +2154,8 @@ abstract class PigeonApiCameraInfo( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -2027,6 +2166,7 @@ abstract class PigeonApiCameraInfo( } } } + /** * A set of requirements and priorities used to select a camera or return a filtered set of cameras. * @@ -2038,7 +2178,7 @@ abstract class PigeonApiCameraSelector( ) { abstract fun pigeon_defaultConstructor( requireLensFacing: LensFacing?, - cameraInfoForFilter: androidx.camera.core.CameraInfo? + cameraInfoForFilter: androidx.camera.core.CameraInfo?, ): androidx.camera.core.CameraSelector /** A static `CameraSelector` that selects the default back facing camera. */ @@ -2050,7 +2190,7 @@ abstract class PigeonApiCameraSelector( /** Filters the input `CameraInfo`s using the `CameraFilter`s assigned to the selector. */ abstract fun filter( pigeon_instance: androidx.camera.core.CameraSelector, - cameraInfos: List + cameraInfos: List, ): List companion object { @@ -2062,7 +2202,8 @@ abstract class PigeonApiCameraSelector( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraSelector.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2073,7 +2214,8 @@ abstract class PigeonApiCameraSelector( try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( api.pigeon_defaultConstructor(requireLensFacingArg, cameraInfoForFilterArg), - pigeon_identifierArg) + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -2089,7 +2231,8 @@ abstract class PigeonApiCameraSelector( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraSelector.defaultBackCamera", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2097,7 +2240,9 @@ abstract class PigeonApiCameraSelector( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.defaultBackCamera(), pigeon_identifierArg) + api.defaultBackCamera(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -2113,7 +2258,8 @@ abstract class PigeonApiCameraSelector( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraSelector.defaultFrontCamera", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2121,7 +2267,9 @@ abstract class PigeonApiCameraSelector( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.defaultFrontCamera(), pigeon_identifierArg) + api.defaultFrontCamera(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -2137,7 +2285,8 @@ abstract class PigeonApiCameraSelector( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraSelector.filter", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2162,12 +2311,12 @@ abstract class PigeonApiCameraSelector( /** Creates a Dart instance of CameraSelector and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.CameraSelector, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2182,7 +2331,8 @@ abstract class PigeonApiCameraSelector( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -2193,6 +2343,7 @@ abstract class PigeonApiCameraSelector( } } } + /** * A singleton which can be used to bind the lifecycle of cameras to any `LifecycleOwner` within an * application's process. @@ -2217,19 +2368,19 @@ abstract class PigeonApiProcessCameraProvider( abstract fun bindToLifecycle( pigeon_instance: androidx.camera.lifecycle.ProcessCameraProvider, cameraSelector: androidx.camera.core.CameraSelector, - useCases: List + useCases: List, ): androidx.camera.core.Camera /** Returns true if the `UseCase` is bound to a lifecycle. */ abstract fun isBound( pigeon_instance: androidx.camera.lifecycle.ProcessCameraProvider, - useCase: androidx.camera.core.UseCase + useCase: androidx.camera.core.UseCase, ): Boolean /** Unbinds all specified use cases from the lifecycle provider. */ abstract fun unbind( pigeon_instance: androidx.camera.lifecycle.ProcessCameraProvider, - useCases: List + useCases: List, ) /** Unbinds all use cases from the lifecycle provider and removes them from CameraX. */ @@ -2239,7 +2390,7 @@ abstract class PigeonApiProcessCameraProvider( @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiProcessCameraProvider? + api: PigeonApiProcessCameraProvider?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -2247,7 +2398,8 @@ abstract class PigeonApiProcessCameraProvider( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ProcessCameraProvider.getInstance", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { _, reply -> api.getInstance { result: Result -> @@ -2269,7 +2421,8 @@ abstract class PigeonApiProcessCameraProvider( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ProcessCameraProvider.getAvailableCameraInfos", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2291,7 +2444,8 @@ abstract class PigeonApiProcessCameraProvider( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ProcessCameraProvider.bindToLifecycle", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2315,7 +2469,8 @@ abstract class PigeonApiProcessCameraProvider( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ProcessCameraProvider.isBound", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2338,7 +2493,8 @@ abstract class PigeonApiProcessCameraProvider( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ProcessCameraProvider.unbind", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2362,7 +2518,8 @@ abstract class PigeonApiProcessCameraProvider( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ProcessCameraProvider.unbindAll", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2387,12 +2544,12 @@ abstract class PigeonApiProcessCameraProvider( /** Creates a Dart instance of ProcessCameraProvider and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.lifecycle.ProcessCameraProvider, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2407,7 +2564,8 @@ abstract class PigeonApiProcessCameraProvider( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -2418,6 +2576,7 @@ abstract class PigeonApiProcessCameraProvider( } } } + /** * The use case which all other use cases are built on top of. * @@ -2429,12 +2588,12 @@ open class PigeonApiUseCase(open val pigeonRegistrar: CameraXLibraryPigeonProxyA /** Creates a Dart instance of UseCase and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.UseCase, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2448,7 +2607,8 @@ open class PigeonApiUseCase(open val pigeonRegistrar: CameraXLibraryPigeonProxyA if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -2459,6 +2619,7 @@ open class PigeonApiUseCase(open val pigeonRegistrar: CameraXLibraryPigeonProxyA } } } + /** * The camera interface is used to control the flow of data to use cases, control the camera via the * `CameraControl`, and publish the state of the camera via CameraInfo. @@ -2486,7 +2647,8 @@ abstract class PigeonApiCamera(open val pigeonRegistrar: CameraXLibraryPigeonPro BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Camera.getCameraInfo", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2510,12 +2672,12 @@ abstract class PigeonApiCamera(open val pigeonRegistrar: CameraXLibraryPigeonPro /** Creates a Dart instance of Camera and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.Camera, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2530,7 +2692,8 @@ abstract class PigeonApiCamera(open val pigeonRegistrar: CameraXLibraryPigeonPro if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -2541,6 +2704,7 @@ abstract class PigeonApiCamera(open val pigeonRegistrar: CameraXLibraryPigeonPro } } } + /** Convenience class for accessing system resources. */ @Suppress("UNCHECKED_CAST") abstract class PigeonApiSystemServicesManager( @@ -2551,21 +2715,21 @@ abstract class PigeonApiSystemServicesManager( abstract fun requestCameraPermissions( pigeon_instance: SystemServicesManager, enableAudio: Boolean, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) /** Returns a path to be used to create a temp file in the current cache directory. */ abstract fun getTempFilePath( pigeon_instance: SystemServicesManager, prefix: String, - suffix: String + suffix: String, ): String companion object { @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiSystemServicesManager? + api: PigeonApiSystemServicesManager?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -2573,7 +2737,8 @@ abstract class PigeonApiSystemServicesManager( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.SystemServicesManager.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2581,7 +2746,9 @@ abstract class PigeonApiSystemServicesManager( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(), pigeon_identifierArg) + api.pigeon_defaultConstructor(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -2597,7 +2764,8 @@ abstract class PigeonApiSystemServicesManager( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.SystemServicesManager.requestCameraPermissions", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2623,7 +2791,8 @@ abstract class PigeonApiSystemServicesManager( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.SystemServicesManager.getTempFilePath", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2649,12 +2818,12 @@ abstract class PigeonApiSystemServicesManager( /** Creates a Dart instance of SystemServicesManager and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: SystemServicesManager, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2663,19 +2832,22 @@ abstract class PigeonApiSystemServicesManager( CameraXError( "new-instance-error", "Attempting to create a new Dart instance of SystemServicesManager, but the class has a nonnull callback method.", - ""))) + "", + ) + ) + ) } } fun onCameraError( pigeon_instanceArg: SystemServicesManager, errorDescriptionArg: String, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -2696,6 +2868,7 @@ abstract class PigeonApiSystemServicesManager( } } } + /** Contains data when an attempt to retrieve camera permissions fails. */ @Suppress("UNCHECKED_CAST") abstract class PigeonApiCameraPermissionsError( @@ -2709,12 +2882,12 @@ abstract class PigeonApiCameraPermissionsError( /** Creates a Dart instance of CameraPermissionsError and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: CameraPermissionsError, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2731,7 +2904,8 @@ abstract class PigeonApiCameraPermissionsError( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -2742,6 +2916,7 @@ abstract class PigeonApiCameraPermissionsError( } } } + /** * Support class to help to determine the media orientation based on the orientation of the device. */ @@ -2763,7 +2938,7 @@ abstract class PigeonApiDeviceOrientationManager( @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiDeviceOrientationManager? + api: PigeonApiDeviceOrientationManager?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -2771,7 +2946,8 @@ abstract class PigeonApiDeviceOrientationManager( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.DeviceOrientationManager.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2779,7 +2955,9 @@ abstract class PigeonApiDeviceOrientationManager( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(), pigeon_identifierArg) + api.pigeon_defaultConstructor(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -2795,7 +2973,8 @@ abstract class PigeonApiDeviceOrientationManager( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.DeviceOrientationManager.startListeningForDeviceOrientationChange", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2818,7 +2997,8 @@ abstract class PigeonApiDeviceOrientationManager( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.DeviceOrientationManager.stopListeningForDeviceOrientationChange", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2841,7 +3021,8 @@ abstract class PigeonApiDeviceOrientationManager( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.DeviceOrientationManager.getDefaultDisplayRotation", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2863,7 +3044,8 @@ abstract class PigeonApiDeviceOrientationManager( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.DeviceOrientationManager.getUiOrientation", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -2889,12 +3071,12 @@ abstract class PigeonApiDeviceOrientationManager( */ fun pigeon_newInstance( pigeon_instanceArg: DeviceOrientationManager, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2903,19 +3085,22 @@ abstract class PigeonApiDeviceOrientationManager( CameraXError( "new-instance-error", "Attempting to create a new Dart instance of DeviceOrientationManager, but the class has a nonnull callback method.", - ""))) + "", + ) + ) + ) } } fun onDeviceOrientationChanged( pigeon_instanceArg: DeviceOrientationManager, orientationArg: String, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -2936,6 +3121,7 @@ abstract class PigeonApiDeviceOrientationManager( } } } + /** * A use case that provides a camera preview stream for displaying on-screen. * @@ -2945,7 +3131,8 @@ abstract class PigeonApiDeviceOrientationManager( abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonProxyApiRegistrar) { abstract fun pigeon_defaultConstructor( resolutionSelector: androidx.camera.core.resolutionselector.ResolutionSelector?, - targetRotation: Long? + targetRotation: Long?, + targetFps: Long?, ): androidx.camera.core.Preview abstract fun resolutionSelector( @@ -2962,7 +3149,7 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr */ abstract fun setSurfaceProvider( pigeon_instance: androidx.camera.core.Preview, - systemServicesManager: SystemServicesManager + systemServicesManager: SystemServicesManager, ): Long /** Releases the `SurfaceProducer` created in `setSurfaceProvider` if one was created. */ @@ -2993,7 +3180,8 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Preview.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3001,11 +3189,17 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr val resolutionSelectorArg = args[1] as androidx.camera.core.resolutionselector.ResolutionSelector? val targetRotationArg = args[2] as Long? + val targetFpsArg = args[3] as Long? val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(resolutionSelectorArg, targetRotationArg), - pigeon_identifierArg) + api.pigeon_defaultConstructor( + resolutionSelectorArg, + targetRotationArg, + targetFpsArg, + ), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -3021,7 +3215,8 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Preview.setSurfaceProvider", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3044,7 +3239,8 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Preview.releaseSurfaceProvider", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3067,7 +3263,8 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Preview.getResolutionInfo", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3089,7 +3286,8 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Preview.setTargetRotation", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3113,7 +3311,8 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Preview.surfaceProducerHandlesCropAndRotation", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3137,12 +3336,12 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr /** Creates a Dart instance of Preview and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.Preview, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3157,7 +3356,8 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -3174,6 +3374,7 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr return pigeonRegistrar.getPigeonApiUseCase() } } + /** * A use case that provides camera stream suitable for video application. * @@ -3185,7 +3386,8 @@ abstract class PigeonApiVideoCapture( ) { /** Create a `VideoCapture` associated with the given `VideoOutput`. */ abstract fun withOutput( - videoOutput: androidx.camera.video.VideoOutput + videoOutput: androidx.camera.video.VideoOutput, + targetFps: Long?, ): androidx.camera.video.VideoCapture<*> /** Gets the VideoOutput associated with this VideoCapture. */ @@ -3196,7 +3398,7 @@ abstract class PigeonApiVideoCapture( /** Sets the desired rotation of the output video. */ abstract fun setTargetRotation( pigeon_instance: androidx.camera.video.VideoCapture<*>, - rotation: Long + rotation: Long, ) companion object { @@ -3208,16 +3410,20 @@ abstract class PigeonApiVideoCapture( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.VideoCapture.withOutput", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List val pigeon_identifierArg = args[0] as Long val videoOutputArg = args[1] as androidx.camera.video.VideoOutput + val targetFpsArg = args[2] as Long? val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.withOutput(videoOutputArg), pigeon_identifierArg) + api.withOutput(videoOutputArg, targetFpsArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -3233,7 +3439,8 @@ abstract class PigeonApiVideoCapture( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.VideoCapture.getOutput", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3255,7 +3462,8 @@ abstract class PigeonApiVideoCapture( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.VideoCapture.setTargetRotation", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3281,12 +3489,12 @@ abstract class PigeonApiVideoCapture( /** Creates a Dart instance of VideoCapture and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.VideoCapture<*>, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3300,7 +3508,8 @@ abstract class PigeonApiVideoCapture( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -3317,6 +3526,7 @@ abstract class PigeonApiVideoCapture( return pigeonRegistrar.getPigeonApiUseCase() } } + /** * A class that will produce video data from a Surface. * @@ -3328,12 +3538,12 @@ open class PigeonApiVideoOutput(open val pigeonRegistrar: CameraXLibraryPigeonPr /** Creates a Dart instance of VideoOutput and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.VideoOutput, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3347,7 +3557,8 @@ open class PigeonApiVideoOutput(open val pigeonRegistrar: CameraXLibraryPigeonPr if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -3358,6 +3569,7 @@ open class PigeonApiVideoOutput(open val pigeonRegistrar: CameraXLibraryPigeonPr } } } + /** * An implementation of `VideoOutput` for starting video recordings that are saved to a File, * ParcelFileDescriptor, or MediaStore. @@ -3369,7 +3581,7 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP abstract fun pigeon_defaultConstructor( aspectRatio: Long?, targetVideoEncodingBitRate: Long?, - qualitySelector: androidx.camera.video.QualitySelector? + qualitySelector: androidx.camera.video.QualitySelector?, ): androidx.camera.video.Recorder /** Gets the aspect ratio of this Recorder. */ @@ -3386,7 +3598,7 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP /** Prepares a recording that will be saved to a File. */ abstract fun prepareRecording( pigeon_instance: androidx.camera.video.Recorder, - path: String + path: String, ): androidx.camera.video.PendingRecording companion object { @@ -3398,7 +3610,8 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Recorder.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3410,8 +3623,12 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( api.pigeon_defaultConstructor( - aspectRatioArg, targetVideoEncodingBitRateArg, qualitySelectorArg), - pigeon_identifierArg) + aspectRatioArg, + targetVideoEncodingBitRateArg, + qualitySelectorArg, + ), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -3427,7 +3644,8 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Recorder.getAspectRatio", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3449,7 +3667,8 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Recorder.getTargetVideoEncodingBitRate", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3471,7 +3690,8 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Recorder.getQualitySelector", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3493,7 +3713,8 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Recorder.prepareRecording", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3518,12 +3739,12 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP /** Creates a Dart instance of Recorder and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.Recorder, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3537,7 +3758,8 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -3554,6 +3776,7 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP return pigeonRegistrar.getPigeonApiVideoOutput() } } + /** Listens for `VideoRecordEvent`s from a `PendingRecording`. */ @Suppress("UNCHECKED_CAST") abstract class PigeonApiVideoRecordEventListener( @@ -3565,7 +3788,7 @@ abstract class PigeonApiVideoRecordEventListener( @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiVideoRecordEventListener? + api: PigeonApiVideoRecordEventListener?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -3573,7 +3796,8 @@ abstract class PigeonApiVideoRecordEventListener( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.VideoRecordEventListener.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3581,7 +3805,9 @@ abstract class PigeonApiVideoRecordEventListener( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(), pigeon_identifierArg) + api.pigeon_defaultConstructor(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -3601,12 +3827,12 @@ abstract class PigeonApiVideoRecordEventListener( */ fun pigeon_newInstance( pigeon_instanceArg: VideoRecordEventListener, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3615,19 +3841,22 @@ abstract class PigeonApiVideoRecordEventListener( CameraXError( "new-instance-error", "Attempting to create a new Dart instance of VideoRecordEventListener, but the class has a nonnull callback method.", - ""))) + "", + ) + ) + ) } } fun onEvent( pigeon_instanceArg: VideoRecordEventListener, eventArg: androidx.camera.video.VideoRecordEvent, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -3647,6 +3876,7 @@ abstract class PigeonApiVideoRecordEventListener( } } } + /** * A recording that can be started at a future time. * @@ -3659,7 +3889,7 @@ abstract class PigeonApiPendingRecording( /** Enables/disables audio to be recorded for this recording. */ abstract fun withAudioEnabled( pigeon_instance: androidx.camera.video.PendingRecording, - initialMuted: Boolean + initialMuted: Boolean, ): androidx.camera.video.PendingRecording /** @@ -3681,7 +3911,7 @@ abstract class PigeonApiPendingRecording( /** Starts the recording, making it an active recording. */ abstract fun start( pigeon_instance: androidx.camera.video.PendingRecording, - listener: VideoRecordEventListener + listener: VideoRecordEventListener, ): androidx.camera.video.Recording companion object { @@ -3693,7 +3923,8 @@ abstract class PigeonApiPendingRecording( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.PendingRecording.withAudioEnabled", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3716,7 +3947,8 @@ abstract class PigeonApiPendingRecording( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.PendingRecording.asPersistentRecording", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3738,7 +3970,8 @@ abstract class PigeonApiPendingRecording( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.PendingRecording.start", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3763,12 +3996,12 @@ abstract class PigeonApiPendingRecording( /** Creates a Dart instance of PendingRecording and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.PendingRecording, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3783,7 +4016,8 @@ abstract class PigeonApiPendingRecording( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -3794,6 +4028,7 @@ abstract class PigeonApiPendingRecording( } } } + /** * Provides controls for the currently active recording. * @@ -3824,7 +4059,10 @@ abstract class PigeonApiRecording(open val pigeonRegistrar: CameraXLibraryPigeon run { val channel = BasicMessageChannel( - binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Recording.close", codec) + binaryMessenger, + "dev.flutter.pigeon.camera_android_camerax.Recording.close", + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3845,7 +4083,10 @@ abstract class PigeonApiRecording(open val pigeonRegistrar: CameraXLibraryPigeon run { val channel = BasicMessageChannel( - binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Recording.pause", codec) + binaryMessenger, + "dev.flutter.pigeon.camera_android_camerax.Recording.pause", + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3868,7 +4109,8 @@ abstract class PigeonApiRecording(open val pigeonRegistrar: CameraXLibraryPigeon BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Recording.resume", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3889,7 +4131,10 @@ abstract class PigeonApiRecording(open val pigeonRegistrar: CameraXLibraryPigeon run { val channel = BasicMessageChannel( - binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Recording.stop", codec) + binaryMessenger, + "dev.flutter.pigeon.camera_android_camerax.Recording.stop", + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -3914,12 +4159,12 @@ abstract class PigeonApiRecording(open val pigeonRegistrar: CameraXLibraryPigeon /** Creates a Dart instance of Recording and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.Recording, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3933,7 +4178,8 @@ abstract class PigeonApiRecording(open val pigeonRegistrar: CameraXLibraryPigeon if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -3944,6 +4190,7 @@ abstract class PigeonApiRecording(open val pigeonRegistrar: CameraXLibraryPigeon } } } + /** * A use case for taking a picture. * @@ -3956,7 +4203,7 @@ abstract class PigeonApiImageCapture( abstract fun pigeon_defaultConstructor( resolutionSelector: androidx.camera.core.resolutionselector.ResolutionSelector?, targetRotation: Long?, - flashMode: CameraXFlashMode? + flashMode: CameraXFlashMode?, ): androidx.camera.core.ImageCapture abstract fun resolutionSelector( @@ -3966,13 +4213,13 @@ abstract class PigeonApiImageCapture( /** Set the flash mode. */ abstract fun setFlashMode( pigeon_instance: androidx.camera.core.ImageCapture, - flashMode: CameraXFlashMode + flashMode: CameraXFlashMode, ) /** Captures a new still image for in memory access. */ abstract fun takePicture( pigeon_instance: androidx.camera.core.ImageCapture, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) /** Sets the desired rotation of the output image. */ @@ -3987,7 +4234,8 @@ abstract class PigeonApiImageCapture( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageCapture.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4000,8 +4248,12 @@ abstract class PigeonApiImageCapture( try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( api.pigeon_defaultConstructor( - resolutionSelectorArg, targetRotationArg, flashModeArg), - pigeon_identifierArg) + resolutionSelectorArg, + targetRotationArg, + flashModeArg, + ), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -4017,7 +4269,8 @@ abstract class PigeonApiImageCapture( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageCapture.setFlashMode", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4041,7 +4294,8 @@ abstract class PigeonApiImageCapture( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageCapture.takePicture", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4065,7 +4319,8 @@ abstract class PigeonApiImageCapture( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageCapture.setTargetRotation", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4091,12 +4346,12 @@ abstract class PigeonApiImageCapture( /** Creates a Dart instance of ImageCapture and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.ImageCapture, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4111,7 +4366,8 @@ abstract class PigeonApiImageCapture( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -4128,6 +4384,7 @@ abstract class PigeonApiImageCapture( return pigeonRegistrar.getPigeonApiUseCase() } } + /** * The resolution strategy defines the resolution selection sequence to select the best size. * @@ -4140,7 +4397,7 @@ abstract class PigeonApiResolutionStrategy( ) { abstract fun pigeon_defaultConstructor( boundSize: android.util.Size, - fallbackRule: ResolutionStrategyFallbackRule + fallbackRule: ResolutionStrategyFallbackRule, ): androidx.camera.core.resolutionselector.ResolutionStrategy /** A resolution strategy chooses the highest available resolution. */ @@ -4168,7 +4425,8 @@ abstract class PigeonApiResolutionStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ResolutionStrategy.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4179,7 +4437,8 @@ abstract class PigeonApiResolutionStrategy( try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( api.pigeon_defaultConstructor(boundSizeArg, fallbackRuleArg), - pigeon_identifierArg) + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -4195,7 +4454,8 @@ abstract class PigeonApiResolutionStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ResolutionStrategy.highestAvailableStrategy", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4203,7 +4463,9 @@ abstract class PigeonApiResolutionStrategy( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.highestAvailableStrategy(), pigeon_identifierArg) + api.highestAvailableStrategy(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -4219,7 +4481,8 @@ abstract class PigeonApiResolutionStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ResolutionStrategy.getBoundSize", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4242,7 +4505,8 @@ abstract class PigeonApiResolutionStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ResolutionStrategy.getFallbackRule", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4267,12 +4531,12 @@ abstract class PigeonApiResolutionStrategy( /** Creates a Dart instance of ResolutionStrategy and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.resolutionselector.ResolutionStrategy, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4287,7 +4551,8 @@ abstract class PigeonApiResolutionStrategy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -4298,6 +4563,7 @@ abstract class PigeonApiResolutionStrategy( } } } + /** * A set of requirements and priorities used to select a resolution for the `UseCase`. * @@ -4311,7 +4577,7 @@ abstract class PigeonApiResolutionSelector( abstract fun pigeon_defaultConstructor( resolutionFilter: androidx.camera.core.resolutionselector.ResolutionFilter?, resolutionStrategy: androidx.camera.core.resolutionselector.ResolutionStrategy?, - aspectRatioStrategy: androidx.camera.core.resolutionselector.AspectRatioStrategy? + aspectRatioStrategy: androidx.camera.core.resolutionselector.AspectRatioStrategy?, ): androidx.camera.core.resolutionselector.ResolutionSelector /** The resolution filter to output the final desired sizes list. */ @@ -4342,7 +4608,8 @@ abstract class PigeonApiResolutionSelector( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ResolutionSelector.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4357,8 +4624,12 @@ abstract class PigeonApiResolutionSelector( try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( api.pigeon_defaultConstructor( - resolutionFilterArg, resolutionStrategyArg, aspectRatioStrategyArg), - pigeon_identifierArg) + resolutionFilterArg, + resolutionStrategyArg, + aspectRatioStrategyArg, + ), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -4374,7 +4645,8 @@ abstract class PigeonApiResolutionSelector( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ResolutionSelector.getAspectRatioStrategy", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4399,12 +4671,12 @@ abstract class PigeonApiResolutionSelector( /** Creates a Dart instance of ResolutionSelector and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.resolutionselector.ResolutionSelector, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4421,7 +4693,8 @@ abstract class PigeonApiResolutionSelector( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -4432,6 +4705,7 @@ abstract class PigeonApiResolutionSelector( } } } + /** * The aspect ratio strategy defines the sequence of aspect ratios that are used to select the best * size for a particular image. @@ -4449,7 +4723,7 @@ abstract class PigeonApiAspectRatioStrategy( */ abstract fun pigeon_defaultConstructor( preferredAspectRatio: AspectRatio, - fallbackRule: AspectRatioStrategyFallbackRule + fallbackRule: AspectRatioStrategyFallbackRule, ): androidx.camera.core.resolutionselector.AspectRatioStrategy /** The pre-defined aspect ratio strategy that selects sizes with RATIO_16_9 in priority. */ @@ -4484,7 +4758,8 @@ abstract class PigeonApiAspectRatioStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.AspectRatioStrategy.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4495,7 +4770,8 @@ abstract class PigeonApiAspectRatioStrategy( try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( api.pigeon_defaultConstructor(preferredAspectRatioArg, fallbackRuleArg), - pigeon_identifierArg) + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -4511,7 +4787,8 @@ abstract class PigeonApiAspectRatioStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.AspectRatioStrategy.ratio_16_9FallbackAutoStrategy", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4519,7 +4796,9 @@ abstract class PigeonApiAspectRatioStrategy( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.ratio_16_9FallbackAutoStrategy(), pigeon_identifierArg) + api.ratio_16_9FallbackAutoStrategy(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -4535,7 +4814,8 @@ abstract class PigeonApiAspectRatioStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.AspectRatioStrategy.ratio_4_3FallbackAutoStrategy", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4543,7 +4823,9 @@ abstract class PigeonApiAspectRatioStrategy( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.ratio_4_3FallbackAutoStrategy(), pigeon_identifierArg) + api.ratio_4_3FallbackAutoStrategy(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -4559,7 +4841,8 @@ abstract class PigeonApiAspectRatioStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.AspectRatioStrategy.getFallbackRule", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4582,7 +4865,8 @@ abstract class PigeonApiAspectRatioStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.AspectRatioStrategy.getPreferredAspectRatio", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4607,12 +4891,12 @@ abstract class PigeonApiAspectRatioStrategy( /** Creates a Dart instance of AspectRatioStrategy and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.resolutionselector.AspectRatioStrategy, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4627,7 +4911,8 @@ abstract class PigeonApiAspectRatioStrategy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -4638,6 +4923,7 @@ abstract class PigeonApiAspectRatioStrategy( } } } + /** * Represents the different states the camera can be in. * @@ -4659,12 +4945,12 @@ abstract class PigeonApiCameraState( /** Creates a Dart instance of CameraState and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.CameraState, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4680,7 +4966,8 @@ abstract class PigeonApiCameraState( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -4691,6 +4978,7 @@ abstract class PigeonApiCameraState( } } } + /** * An interface which contains the camera exposure related information. * @@ -4715,12 +5003,12 @@ abstract class PigeonApiExposureState( /** Creates a Dart instance of ExposureState and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.ExposureState, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4733,22 +5021,24 @@ abstract class PigeonApiExposureState( val channelName = "dev.flutter.pigeon.camera_android_camerax.ExposureState.pigeon_newInstance" val channel = BasicMessageChannel(binaryMessenger, channelName, codec) channel.send( - listOf(pigeon_identifierArg, exposureCompensationRangeArg, exposureCompensationStepArg)) { - if (it is List<*>) { - if (it.size > 1) { - callback( - Result.failure( - CameraXError(it[0] as String, it[1] as String, it[2] as String?))) - } else { - callback(Result.success(Unit)) - } - } else { - callback(Result.failure(CameraXLibraryPigeonUtils.createConnectionError(channelName))) - } + listOf(pigeon_identifierArg, exposureCompensationRangeArg, exposureCompensationStepArg) + ) { + if (it is List<*>) { + if (it.size > 1) { + callback( + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) + } else { + callback(Result.success(Unit)) } + } else { + callback(Result.failure(CameraXLibraryPigeonUtils.createConnectionError(channelName))) + } + } } } } + /** * An interface which contains the zoom related information from a camera. * @@ -4766,12 +5056,12 @@ abstract class PigeonApiZoomState(open val pigeonRegistrar: CameraXLibraryPigeon /** Creates a Dart instance of ZoomState and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.ZoomState, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4787,7 +5077,8 @@ abstract class PigeonApiZoomState(open val pigeonRegistrar: CameraXLibraryPigeon if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -4798,6 +5089,7 @@ abstract class PigeonApiZoomState(open val pigeonRegistrar: CameraXLibraryPigeon } } } + /** * A use case providing CPU accessible images for an app to perform image analysis on. * @@ -4810,7 +5102,8 @@ abstract class PigeonApiImageAnalysis( abstract fun pigeon_defaultConstructor( resolutionSelector: androidx.camera.core.resolutionselector.ResolutionSelector?, targetRotation: Long?, - outputImageFormat: Long? + targetFps: Long?, + outputImageFormat: Long?, ): androidx.camera.core.ImageAnalysis abstract fun resolutionSelector( @@ -4820,7 +5113,7 @@ abstract class PigeonApiImageAnalysis( /** Sets an analyzer to receive and analyze images. */ abstract fun setAnalyzer( pigeon_instance: androidx.camera.core.ImageAnalysis, - analyzer: androidx.camera.core.ImageAnalysis.Analyzer + analyzer: androidx.camera.core.ImageAnalysis.Analyzer, ) /** Removes a previously set analyzer. */ @@ -4829,7 +5122,7 @@ abstract class PigeonApiImageAnalysis( /** Sets the target rotation. */ abstract fun setTargetRotation( pigeon_instance: androidx.camera.core.ImageAnalysis, - rotation: Long + rotation: Long, ) companion object { @@ -4841,7 +5134,8 @@ abstract class PigeonApiImageAnalysis( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageAnalysis.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4849,13 +5143,19 @@ abstract class PigeonApiImageAnalysis( val resolutionSelectorArg = args[1] as androidx.camera.core.resolutionselector.ResolutionSelector? val targetRotationArg = args[2] as Long? - val outputImageFormatArg = args[3] as Long? + val targetFpsArg = args[3] as Long? + val outputImageFormatArg = args[4] as Long? val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( api.pigeon_defaultConstructor( - resolutionSelectorArg, targetRotationArg, outputImageFormatArg), - pigeon_identifierArg) + resolutionSelectorArg, + targetRotationArg, + targetFpsArg, + outputImageFormatArg, + ), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -4871,7 +5171,8 @@ abstract class PigeonApiImageAnalysis( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageAnalysis.setAnalyzer", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4895,7 +5196,8 @@ abstract class PigeonApiImageAnalysis( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageAnalysis.clearAnalyzer", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4918,7 +5220,8 @@ abstract class PigeonApiImageAnalysis( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageAnalysis.setTargetRotation", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -4944,12 +5247,12 @@ abstract class PigeonApiImageAnalysis( /** Creates a Dart instance of ImageAnalysis and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.ImageAnalysis, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4964,7 +5267,8 @@ abstract class PigeonApiImageAnalysis( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -4981,6 +5285,7 @@ abstract class PigeonApiImageAnalysis( return pigeonRegistrar.getPigeonApiUseCase() } } + /** * Interface for analyzing images. * @@ -4999,7 +5304,8 @@ abstract class PigeonApiAnalyzer(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Analyzer.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5007,7 +5313,9 @@ abstract class PigeonApiAnalyzer(open val pigeonRegistrar: CameraXLibraryPigeonP val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(), pigeon_identifierArg) + api.pigeon_defaultConstructor(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -5025,12 +5333,12 @@ abstract class PigeonApiAnalyzer(open val pigeonRegistrar: CameraXLibraryPigeonP /** Creates a Dart instance of Analyzer and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.ImageAnalysis.Analyzer, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5039,7 +5347,10 @@ abstract class PigeonApiAnalyzer(open val pigeonRegistrar: CameraXLibraryPigeonP CameraXError( "new-instance-error", "Attempting to create a new Dart instance of Analyzer, but the class has a nonnull callback method.", - ""))) + "", + ) + ) + ) } } @@ -5047,12 +5358,12 @@ abstract class PigeonApiAnalyzer(open val pigeonRegistrar: CameraXLibraryPigeonP fun analyze( pigeon_instanceArg: androidx.camera.core.ImageAnalysis.Analyzer, imageArg: androidx.camera.core.ImageProxy, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -5072,6 +5383,7 @@ abstract class PigeonApiAnalyzer(open val pigeonRegistrar: CameraXLibraryPigeonP } } } + /** * Error that the camera has encountered. * @@ -5090,12 +5402,12 @@ abstract class PigeonApiCameraStateStateError( /** Creates a Dart instance of CameraStateStateError and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.CameraState.StateError, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5111,7 +5423,8 @@ abstract class PigeonApiCameraStateStateError( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -5122,6 +5435,7 @@ abstract class PigeonApiCameraStateStateError( } } } + /** * LiveData is a data holder class that can be observed within a given lifecycle. * @@ -5140,7 +5454,7 @@ abstract class PigeonApiLiveData(open val pigeonRegistrar: CameraXLibraryPigeonP /** Adds the given observer to the observers list within the lifespan of the given owner. */ abstract fun observe( pigeon_instance: io.flutter.plugins.camerax.LiveDataProxyApi.LiveDataWrapper, - observer: androidx.lifecycle.Observer<*> + observer: androidx.lifecycle.Observer<*>, ) /** Removes all observers that are tied to the given `LifecycleOwner`. */ @@ -5162,7 +5476,8 @@ abstract class PigeonApiLiveData(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.LiveData.observe", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5187,7 +5502,8 @@ abstract class PigeonApiLiveData(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.LiveData.removeObservers", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5211,7 +5527,8 @@ abstract class PigeonApiLiveData(open val pigeonRegistrar: CameraXLibraryPigeonP BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.LiveData.getValue", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5236,12 +5553,12 @@ abstract class PigeonApiLiveData(open val pigeonRegistrar: CameraXLibraryPigeonP /** Creates a Dart instance of LiveData and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: io.flutter.plugins.camerax.LiveDataProxyApi.LiveDataWrapper, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5256,7 +5573,8 @@ abstract class PigeonApiLiveData(open val pigeonRegistrar: CameraXLibraryPigeonP if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -5267,6 +5585,7 @@ abstract class PigeonApiLiveData(open val pigeonRegistrar: CameraXLibraryPigeonP } } } + /** * An image proxy which has a similar interface as `android.media.Image`. * @@ -5302,7 +5621,8 @@ abstract class PigeonApiImageProxy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageProxy.getPlanes", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5324,7 +5644,8 @@ abstract class PigeonApiImageProxy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageProxy.close", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5349,12 +5670,12 @@ abstract class PigeonApiImageProxy( /** Creates a Dart instance of ImageProxy and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.ImageProxy, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5371,7 +5692,8 @@ abstract class PigeonApiImageProxy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -5382,18 +5704,17 @@ abstract class PigeonApiImageProxy( } } } -/** Utils for working with [ImageProxy]s. */ + +/** Utilities for working with [ImageProxy]s. */ @Suppress("UNCHECKED_CAST") abstract class PigeonApiImageProxyUtils( open val pigeonRegistrar: CameraXLibraryPigeonProxyApiRegistrar ) { - /** - * Returns a single Byte Buffer that is representative of the [planes] that are NV21 compatible. - */ + /** Returns a single buffer that is representative of three NV21-compatible [planes]. */ abstract fun getNv21Buffer( imageWidth: Long, imageHeight: Long, - planes: List + planes: List, ): ByteArray companion object { @@ -5405,7 +5726,8 @@ abstract class PigeonApiImageProxyUtils( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ImageProxyUtils.getNv21Buffer", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5432,8 +5754,8 @@ abstract class PigeonApiImageProxyUtils( fun pigeon_newInstance(pigeon_instanceArg: ImageProxyUtils, callback: (Result) -> Unit) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5448,7 +5770,8 @@ abstract class PigeonApiImageProxyUtils( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -5459,6 +5782,7 @@ abstract class PigeonApiImageProxyUtils( } } } + /** * A plane proxy which has an analogous interface as `android.media.Image.Plane`. * @@ -5481,12 +5805,12 @@ abstract class PigeonApiPlaneProxy( /** Creates a Dart instance of PlaneProxy and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.ImageProxy.PlaneProxy, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5503,7 +5827,8 @@ abstract class PigeonApiPlaneProxy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -5514,6 +5839,7 @@ abstract class PigeonApiPlaneProxy( } } } + /** * Defines a desired quality setting that can be used to configure components with quality setting * requirements such as creating a Recorder. @@ -5527,19 +5853,19 @@ abstract class PigeonApiQualitySelector( /** Gets an instance of QualitySelector with a desired quality. */ abstract fun from( quality: VideoQuality, - fallbackStrategy: androidx.camera.video.FallbackStrategy? + fallbackStrategy: androidx.camera.video.FallbackStrategy?, ): androidx.camera.video.QualitySelector /** Gets an instance of QualitySelector with ordered desired qualities. */ abstract fun fromOrderedList( qualities: List, - fallbackStrategy: androidx.camera.video.FallbackStrategy? + fallbackStrategy: androidx.camera.video.FallbackStrategy?, ): androidx.camera.video.QualitySelector /** Gets the corresponding resolution from the input quality. */ abstract fun getResolution( cameraInfo: androidx.camera.core.CameraInfo, - quality: VideoQuality + quality: VideoQuality, ): android.util.Size? companion object { @@ -5551,7 +5877,8 @@ abstract class PigeonApiQualitySelector( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.QualitySelector.from", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5561,7 +5888,9 @@ abstract class PigeonApiQualitySelector( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.from(qualityArg, fallbackStrategyArg), pigeon_identifierArg) + api.from(qualityArg, fallbackStrategyArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -5577,7 +5906,8 @@ abstract class PigeonApiQualitySelector( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.QualitySelector.fromOrderedList", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5587,7 +5917,9 @@ abstract class PigeonApiQualitySelector( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.fromOrderedList(qualitiesArg, fallbackStrategyArg), pigeon_identifierArg) + api.fromOrderedList(qualitiesArg, fallbackStrategyArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -5603,7 +5935,8 @@ abstract class PigeonApiQualitySelector( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.QualitySelector.getResolution", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5628,12 +5961,12 @@ abstract class PigeonApiQualitySelector( /** Creates a Dart instance of QualitySelector and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.QualitySelector, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5648,7 +5981,8 @@ abstract class PigeonApiQualitySelector( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -5659,6 +5993,7 @@ abstract class PigeonApiQualitySelector( } } } + /** * A class represents the strategy that will be adopted when the device does not support all the * desired Quality in QualitySelector in order to select the quality as possible. @@ -5706,7 +6041,8 @@ abstract class PigeonApiFallbackStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FallbackStrategy.higherQualityOrLowerThan", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5715,7 +6051,9 @@ abstract class PigeonApiFallbackStrategy( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.higherQualityOrLowerThan(qualityArg), pigeon_identifierArg) + api.higherQualityOrLowerThan(qualityArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -5731,7 +6069,8 @@ abstract class PigeonApiFallbackStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FallbackStrategy.higherQualityThan", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5740,7 +6079,9 @@ abstract class PigeonApiFallbackStrategy( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.higherQualityThan(qualityArg), pigeon_identifierArg) + api.higherQualityThan(qualityArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -5756,7 +6097,8 @@ abstract class PigeonApiFallbackStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FallbackStrategy.lowerQualityOrHigherThan", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5765,7 +6107,9 @@ abstract class PigeonApiFallbackStrategy( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.lowerQualityOrHigherThan(qualityArg), pigeon_identifierArg) + api.lowerQualityOrHigherThan(qualityArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -5781,7 +6125,8 @@ abstract class PigeonApiFallbackStrategy( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FallbackStrategy.lowerQualityThan", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5790,7 +6135,9 @@ abstract class PigeonApiFallbackStrategy( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.lowerQualityThan(qualityArg), pigeon_identifierArg) + api.lowerQualityThan(qualityArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -5808,12 +6155,12 @@ abstract class PigeonApiFallbackStrategy( /** Creates a Dart instance of FallbackStrategy and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.video.FallbackStrategy, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5828,7 +6175,8 @@ abstract class PigeonApiFallbackStrategy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -5839,6 +6187,7 @@ abstract class PigeonApiFallbackStrategy( } } } + /** * The CameraControl provides various asynchronous operations like zoom, focus and metering which * affects output of all UseCases currently bound to that camera. @@ -5853,34 +6202,34 @@ abstract class PigeonApiCameraControl( abstract fun enableTorch( pigeon_instance: androidx.camera.core.CameraControl, torch: Boolean, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) /** Sets current zoom by ratio. */ abstract fun setZoomRatio( pigeon_instance: androidx.camera.core.CameraControl, ratio: Double, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) /** Starts a focus and metering action configured by the `FocusMeteringAction`. */ abstract fun startFocusAndMetering( pigeon_instance: androidx.camera.core.CameraControl, action: androidx.camera.core.FocusMeteringAction, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) /** Cancels current FocusMeteringAction and clears AF/AE/AWB regions. */ abstract fun cancelFocusAndMetering( pigeon_instance: androidx.camera.core.CameraControl, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) /** Set the exposure compensation value for the camera. */ abstract fun setExposureCompensationIndex( pigeon_instance: androidx.camera.core.CameraControl, index: Long, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) companion object { @@ -5892,7 +6241,8 @@ abstract class PigeonApiCameraControl( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraControl.enableTorch", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5916,7 +6266,8 @@ abstract class PigeonApiCameraControl( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraControl.setZoomRatio", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5940,7 +6291,8 @@ abstract class PigeonApiCameraControl( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraControl.startFocusAndMetering", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5966,7 +6318,8 @@ abstract class PigeonApiCameraControl( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraControl.cancelFocusAndMetering", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -5989,7 +6342,8 @@ abstract class PigeonApiCameraControl( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraControl.setExposureCompensationIndex", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6017,12 +6371,12 @@ abstract class PigeonApiCameraControl( /** Creates a Dart instance of CameraControl and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.CameraControl, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6036,7 +6390,8 @@ abstract class PigeonApiCameraControl( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -6047,6 +6402,7 @@ abstract class PigeonApiCameraControl( } } } + /** * The builder used to create the `FocusMeteringAction`. * @@ -6065,20 +6421,20 @@ abstract class PigeonApiFocusMeteringActionBuilder( /** Creates a Builder from a `MeteringPoint` and `MeteringMode`. */ abstract fun withMode( point: androidx.camera.core.MeteringPoint, - mode: MeteringMode + mode: MeteringMode, ): androidx.camera.core.FocusMeteringAction.Builder /** Adds another MeteringPoint with default metering mode. */ abstract fun addPoint( pigeon_instance: androidx.camera.core.FocusMeteringAction.Builder, - point: androidx.camera.core.MeteringPoint + point: androidx.camera.core.MeteringPoint, ) /** Adds another MeteringPoint with specified meteringMode. */ abstract fun addPointWithMode( pigeon_instance: androidx.camera.core.FocusMeteringAction.Builder, point: androidx.camera.core.MeteringPoint, - mode: MeteringMode + mode: MeteringMode, ) /** Disables the auto-cancel. */ @@ -6093,7 +6449,7 @@ abstract class PigeonApiFocusMeteringActionBuilder( @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiFocusMeteringActionBuilder? + api: PigeonApiFocusMeteringActionBuilder?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -6101,7 +6457,8 @@ abstract class PigeonApiFocusMeteringActionBuilder( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FocusMeteringActionBuilder.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6110,7 +6467,9 @@ abstract class PigeonApiFocusMeteringActionBuilder( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(pointArg), pigeon_identifierArg) + api.pigeon_defaultConstructor(pointArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -6126,7 +6485,8 @@ abstract class PigeonApiFocusMeteringActionBuilder( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FocusMeteringActionBuilder.withMode", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6136,7 +6496,9 @@ abstract class PigeonApiFocusMeteringActionBuilder( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.withMode(pointArg, modeArg), pigeon_identifierArg) + api.withMode(pointArg, modeArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -6152,7 +6514,8 @@ abstract class PigeonApiFocusMeteringActionBuilder( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FocusMeteringActionBuilder.addPoint", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6176,7 +6539,8 @@ abstract class PigeonApiFocusMeteringActionBuilder( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FocusMeteringActionBuilder.addPointWithMode", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6201,7 +6565,8 @@ abstract class PigeonApiFocusMeteringActionBuilder( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FocusMeteringActionBuilder.disableAutoCancel", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6224,7 +6589,8 @@ abstract class PigeonApiFocusMeteringActionBuilder( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.FocusMeteringActionBuilder.build", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6250,12 +6616,12 @@ abstract class PigeonApiFocusMeteringActionBuilder( */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.FocusMeteringAction.Builder, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6270,7 +6636,8 @@ abstract class PigeonApiFocusMeteringActionBuilder( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -6281,6 +6648,7 @@ abstract class PigeonApiFocusMeteringActionBuilder( } } } + /** * A configuration used to trigger a focus and/or metering action. * @@ -6314,12 +6682,12 @@ abstract class PigeonApiFocusMeteringAction( /** Creates a Dart instance of FocusMeteringAction and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.FocusMeteringAction, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6340,22 +6708,25 @@ abstract class PigeonApiFocusMeteringAction( meteringPointsAeArg, meteringPointsAfArg, meteringPointsAwbArg, - isAutoCancelEnabledArg)) { - if (it is List<*>) { - if (it.size > 1) { - callback( - Result.failure( - CameraXError(it[0] as String, it[1] as String, it[2] as String?))) - } else { - callback(Result.success(Unit)) - } - } else { - callback(Result.failure(CameraXLibraryPigeonUtils.createConnectionError(channelName))) - } + isAutoCancelEnabledArg, + ) + ) { + if (it is List<*>) { + if (it.size > 1) { + callback( + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) + } else { + callback(Result.success(Unit)) } + } else { + callback(Result.failure(CameraXLibraryPigeonUtils.createConnectionError(channelName))) + } + } } } } + /** * Result of the `CameraControl.startFocusAndMetering`. * @@ -6372,12 +6743,12 @@ abstract class PigeonApiFocusMeteringResult( /** Creates a Dart instance of FocusMeteringResult and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.FocusMeteringResult, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6393,7 +6764,8 @@ abstract class PigeonApiFocusMeteringResult( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -6404,6 +6776,7 @@ abstract class PigeonApiFocusMeteringResult( } } } + /** * An immutable package of settings and outputs needed to capture a single image from the camera * device. @@ -6432,7 +6805,8 @@ abstract class PigeonApiCaptureRequest( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CaptureRequest.controlAELock", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6440,7 +6814,9 @@ abstract class PigeonApiCaptureRequest( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.controlAELock(), pigeon_identifierArg) + api.controlAELock(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -6458,12 +6834,12 @@ abstract class PigeonApiCaptureRequest( /** Creates a Dart instance of CaptureRequest and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: android.hardware.camera2.CaptureRequest, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6478,7 +6854,8 @@ abstract class PigeonApiCaptureRequest( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -6489,6 +6866,7 @@ abstract class PigeonApiCaptureRequest( } } } + /** * A Key is used to do capture request field lookups with CaptureRequest.get or to set fields with * `CaptureRequest.Builder.set`. @@ -6503,12 +6881,12 @@ open class PigeonApiCaptureRequestKey( /** Creates a Dart instance of CaptureRequestKey and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: android.hardware.camera2.CaptureRequest.Key<*>, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6523,7 +6901,8 @@ open class PigeonApiCaptureRequestKey( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -6534,6 +6913,7 @@ open class PigeonApiCaptureRequestKey( } } } + /** * A bundle of Camera2 capture request options. * @@ -6551,14 +6931,14 @@ abstract class PigeonApiCaptureRequestOptions( /** Returns a value for the given CaptureRequestKey or null if it hasn't been set. */ abstract fun getCaptureRequestOption( pigeon_instance: androidx.camera.camera2.interop.CaptureRequestOptions, - key: android.hardware.camera2.CaptureRequest.Key<*> + key: android.hardware.camera2.CaptureRequest.Key<*>, ): Any? companion object { @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiCaptureRequestOptions? + api: PigeonApiCaptureRequestOptions?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -6566,7 +6946,8 @@ abstract class PigeonApiCaptureRequestOptions( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CaptureRequestOptions.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6575,7 +6956,9 @@ abstract class PigeonApiCaptureRequestOptions( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(optionsArg), pigeon_identifierArg) + api.pigeon_defaultConstructor(optionsArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -6591,7 +6974,8 @@ abstract class PigeonApiCaptureRequestOptions( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CaptureRequestOptions.getCaptureRequestOption", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6617,12 +7001,12 @@ abstract class PigeonApiCaptureRequestOptions( /** Creates a Dart instance of CaptureRequestOptions and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.camera2.interop.CaptureRequestOptions, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6637,7 +7021,8 @@ abstract class PigeonApiCaptureRequestOptions( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -6648,6 +7033,7 @@ abstract class PigeonApiCaptureRequestOptions( } } } + /** * An class that provides ability to interoperate with the 1android.hardware.camera21 APIs. * @@ -6667,14 +7053,14 @@ abstract class PigeonApiCamera2CameraControl( abstract fun addCaptureRequestOptions( pigeon_instance: androidx.camera.camera2.interop.Camera2CameraControl, bundle: androidx.camera.camera2.interop.CaptureRequestOptions, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) companion object { @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiCamera2CameraControl? + api: PigeonApiCamera2CameraControl?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -6682,7 +7068,8 @@ abstract class PigeonApiCamera2CameraControl( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Camera2CameraControl.from", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6691,7 +7078,9 @@ abstract class PigeonApiCamera2CameraControl( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.from(cameraControlArg), pigeon_identifierArg) + api.from(cameraControlArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -6707,7 +7096,8 @@ abstract class PigeonApiCamera2CameraControl( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Camera2CameraControl.addCaptureRequestOptions", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6733,12 +7123,12 @@ abstract class PigeonApiCamera2CameraControl( /** Creates a Dart instance of Camera2CameraControl and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.camera2.interop.Camera2CameraControl, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6753,7 +7143,8 @@ abstract class PigeonApiCamera2CameraControl( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -6764,6 +7155,7 @@ abstract class PigeonApiCamera2CameraControl( } } } + /** * Applications can filter out unsuitable sizes and sort the resolution list in the preferred order * by implementing the resolution filter interface. @@ -6788,7 +7180,8 @@ abstract class PigeonApiResolutionFilter( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.ResolutionFilter.createWithOnePreferredSize", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6797,7 +7190,9 @@ abstract class PigeonApiResolutionFilter( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.createWithOnePreferredSize(preferredSizeArg), pigeon_identifierArg) + api.createWithOnePreferredSize(preferredSizeArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -6815,12 +7210,12 @@ abstract class PigeonApiResolutionFilter( /** Creates a Dart instance of ResolutionFilter and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.resolutionselector.ResolutionFilter, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6835,7 +7230,8 @@ abstract class PigeonApiResolutionFilter( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -6846,6 +7242,7 @@ abstract class PigeonApiResolutionFilter( } } } + /** * A Key is used to do camera characteristics field lookups with `CameraCharacteristics.get`. * @@ -6862,12 +7259,12 @@ open class PigeonApiCameraCharacteristicsKey( */ fun pigeon_newInstance( pigeon_instanceArg: android.hardware.camera2.CameraCharacteristics.Key<*>, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6882,7 +7279,8 @@ open class PigeonApiCameraCharacteristicsKey( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -6893,6 +7291,7 @@ open class PigeonApiCameraCharacteristicsKey( } } } + /** * The properties describing a `CameraDevice`. * @@ -6925,7 +7324,7 @@ abstract class PigeonApiCameraCharacteristics( @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiCameraCharacteristics? + api: PigeonApiCameraCharacteristics?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -6933,7 +7332,8 @@ abstract class PigeonApiCameraCharacteristics( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraCharacteristics.infoSupportedHardwareLevel", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6941,7 +7341,9 @@ abstract class PigeonApiCameraCharacteristics( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.infoSupportedHardwareLevel(), pigeon_identifierArg) + api.infoSupportedHardwareLevel(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -6957,7 +7359,8 @@ abstract class PigeonApiCameraCharacteristics( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.CameraCharacteristics.sensorOrientation", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -6965,7 +7368,9 @@ abstract class PigeonApiCameraCharacteristics( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.sensorOrientation(), pigeon_identifierArg) + api.sensorOrientation(), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -6983,12 +7388,12 @@ abstract class PigeonApiCameraCharacteristics( /** Creates a Dart instance of CameraCharacteristics and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: android.hardware.camera2.CameraCharacteristics, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7003,7 +7408,8 @@ abstract class PigeonApiCameraCharacteristics( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -7014,6 +7420,7 @@ abstract class PigeonApiCameraCharacteristics( } } } + /** * An interface for retrieving Camera2-related camera information. * @@ -7037,7 +7444,7 @@ abstract class PigeonApiCamera2CameraInfo( /** Gets a camera characteristic value. */ abstract fun getCameraCharacteristic( pigeon_instance: androidx.camera.camera2.interop.Camera2CameraInfo, - key: android.hardware.camera2.CameraCharacteristics.Key<*> + key: android.hardware.camera2.CameraCharacteristics.Key<*>, ): Any? companion object { @@ -7049,7 +7456,8 @@ abstract class PigeonApiCamera2CameraInfo( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Camera2CameraInfo.from", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -7058,7 +7466,9 @@ abstract class PigeonApiCamera2CameraInfo( val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.from(cameraInfoArg), pigeon_identifierArg) + api.from(cameraInfoArg), + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -7074,7 +7484,8 @@ abstract class PigeonApiCamera2CameraInfo( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Camera2CameraInfo.getCameraId", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -7096,7 +7507,8 @@ abstract class PigeonApiCamera2CameraInfo( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.Camera2CameraInfo.getCameraCharacteristic", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -7121,12 +7533,12 @@ abstract class PigeonApiCamera2CameraInfo( /** Creates a Dart instance of Camera2CameraInfo and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.camera2.interop.Camera2CameraInfo, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7141,7 +7553,8 @@ abstract class PigeonApiCamera2CameraInfo( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -7152,6 +7565,7 @@ abstract class PigeonApiCamera2CameraInfo( } } } + /** * A factory to create a MeteringPoint. * @@ -7165,7 +7579,7 @@ abstract class PigeonApiMeteringPointFactory( abstract fun createPoint( pigeon_instance: androidx.camera.core.MeteringPointFactory, x: Double, - y: Double + y: Double, ): androidx.camera.core.MeteringPoint /** Creates a MeteringPoint by x, y, size. */ @@ -7173,14 +7587,14 @@ abstract class PigeonApiMeteringPointFactory( pigeon_instance: androidx.camera.core.MeteringPointFactory, x: Double, y: Double, - size: Double + size: Double, ): androidx.camera.core.MeteringPoint companion object { @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiMeteringPointFactory? + api: PigeonApiMeteringPointFactory?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -7188,7 +7602,8 @@ abstract class PigeonApiMeteringPointFactory( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.MeteringPointFactory.createPoint", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -7212,7 +7627,8 @@ abstract class PigeonApiMeteringPointFactory( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.MeteringPointFactory.createPointWithSize", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -7239,12 +7655,12 @@ abstract class PigeonApiMeteringPointFactory( /** Creates a Dart instance of MeteringPointFactory and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.MeteringPointFactory, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7259,7 +7675,8 @@ abstract class PigeonApiMeteringPointFactory( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } @@ -7270,6 +7687,7 @@ abstract class PigeonApiMeteringPointFactory( } } } + /** * A MeteringPointFactory that can convert a View (x, y) into a MeteringPoint which can then be used * to construct a FocusMeteringAction to start a focus and metering action. @@ -7288,14 +7706,14 @@ abstract class PigeonApiDisplayOrientedMeteringPointFactory( abstract fun pigeon_defaultConstructor( cameraInfo: androidx.camera.core.CameraInfo, width: Double, - height: Double + height: Double, ): androidx.camera.core.DisplayOrientedMeteringPointFactory companion object { @Suppress("LocalVariableName") fun setUpMessageHandlers( binaryMessenger: BinaryMessenger, - api: PigeonApiDisplayOrientedMeteringPointFactory? + api: PigeonApiDisplayOrientedMeteringPointFactory?, ) { val codec = api?.pigeonRegistrar?.codec ?: CameraXLibraryPigeonCodec() run { @@ -7303,7 +7721,8 @@ abstract class PigeonApiDisplayOrientedMeteringPointFactory( BasicMessageChannel( binaryMessenger, "dev.flutter.pigeon.camera_android_camerax.DisplayOrientedMeteringPointFactory.pigeon_defaultConstructor", - codec) + codec, + ) if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List @@ -7315,7 +7734,8 @@ abstract class PigeonApiDisplayOrientedMeteringPointFactory( try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( api.pigeon_defaultConstructor(cameraInfoArg, widthArg, heightArg), - pigeon_identifierArg) + pigeon_identifierArg, + ) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) @@ -7336,12 +7756,12 @@ abstract class PigeonApiDisplayOrientedMeteringPointFactory( */ fun pigeon_newInstance( pigeon_instanceArg: androidx.camera.core.DisplayOrientedMeteringPointFactory, - callback: (Result) -> Unit + callback: (Result) -> Unit, ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure( - CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) + Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) + ) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7356,7 +7776,8 @@ abstract class PigeonApiDisplayOrientedMeteringPointFactory( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) + ) } else { callback(Result.success(Unit)) } diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageAnalysisProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageAnalysisProxyApi.java index e914ad81e52..8391e363610 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageAnalysisProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageAnalysisProxyApi.java @@ -4,8 +4,13 @@ package io.flutter.plugins.camerax; +import android.hardware.camera2.CaptureRequest; +import android.util.Range; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.camera.camera2.interop.Camera2Interop; +import androidx.camera.camera2.interop.ExperimentalCamera2Interop; import androidx.camera.core.ImageAnalysis; import androidx.camera.core.resolutionselector.ResolutionSelector; import androidx.core.content.ContextCompat; @@ -18,11 +23,13 @@ class ImageAnalysisProxyApi extends PigeonApiImageAnalysis { static final long CLEAR_FINALIZED_WEAK_REFERENCES_INTERVAL_FOR_IMAGE_ANALYSIS = 1000; + @OptIn(markerClass = ExperimentalCamera2Interop.class) @NonNull @Override public ImageAnalysis pigeon_defaultConstructor( @Nullable ResolutionSelector resolutionSelector, @Nullable Long targetRotation, + @Nullable Long targetFps, @Nullable Long outputImageFormat) { final ImageAnalysis.Builder builder = new ImageAnalysis.Builder(); if (resolutionSelector != null) { @@ -36,6 +43,14 @@ public ImageAnalysis pigeon_defaultConstructor( builder.setOutputImageFormat(outputImageFormat.intValue()); } + if (targetFps != null) { + Range targetFpsRange = new Range<>(targetFps.intValue(), targetFps.intValue()); + Camera2Interop.Extender extender = new Camera2Interop.Extender<>(builder); + extender.setCaptureRequestOption( + CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, targetFpsRange + ); + } + return builder.build(); } diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 5269de95c07..07f1cb4ef80 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -4,9 +4,14 @@ package io.flutter.plugins.camerax; +import android.hardware.camera2.CaptureRequest; +import android.util.Range; import android.view.Surface; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.camera.camera2.interop.Camera2Interop; +import androidx.camera.camera2.interop.ExperimentalCamera2Interop; import androidx.camera.core.Preview; import androidx.camera.core.ResolutionInfo; import androidx.camera.core.SurfaceRequest; @@ -35,10 +40,13 @@ public ProxyApiRegistrar getPigeonRegistrar() { return (ProxyApiRegistrar) super.getPigeonRegistrar(); } + @OptIn(markerClass = ExperimentalCamera2Interop.class) @NonNull @Override public Preview pigeon_defaultConstructor( - @Nullable ResolutionSelector resolutionSelector, @Nullable Long targetRotation) { + @Nullable ResolutionSelector resolutionSelector, + @Nullable Long targetRotation, + @Nullable Long targetFps) { final Preview.Builder builder = new Preview.Builder(); if (targetRotation != null) { builder.setTargetRotation(targetRotation.intValue()); @@ -46,6 +54,15 @@ public Preview pigeon_defaultConstructor( if (resolutionSelector != null) { builder.setResolutionSelector(resolutionSelector); } + + if (targetFps != null) { + Range targetFpsRange = new Range<>(targetFps.intValue(), targetFps.intValue()); + Camera2Interop.Extender extender = new Camera2Interop.Extender<>(builder); + extender.setCaptureRequestOption( + CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, targetFpsRange + ); + } + return builder.build(); } diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/VideoCaptureProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/VideoCaptureProxyApi.java index 3fb3a170b9c..3924a3c3b68 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/VideoCaptureProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/VideoCaptureProxyApi.java @@ -4,7 +4,14 @@ package io.flutter.plugins.camerax; +import android.hardware.camera2.CaptureRequest; +import android.util.Range; + import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.OptIn; +import androidx.camera.camera2.interop.Camera2Interop; +import androidx.camera.camera2.interop.ExperimentalCamera2Interop; import androidx.camera.video.VideoCapture; import androidx.camera.video.VideoOutput; @@ -18,10 +25,21 @@ class VideoCaptureProxyApi extends PigeonApiVideoCapture { super(pigeonRegistrar); } + @OptIn(markerClass = ExperimentalCamera2Interop.class) @NonNull @Override - public VideoCapture withOutput(@NonNull VideoOutput videoOutput) { - return VideoCapture.withOutput(videoOutput); + public VideoCapture withOutput(@NonNull VideoOutput videoOutput, @Nullable Long targetFps) { + VideoCapture.Builder builder = new VideoCapture.Builder<>(videoOutput); + + if (targetFps != null) { + Range targetFpsRange = new Range<>(targetFps.intValue(), targetFps.intValue()); + Camera2Interop.Extender> extender = new Camera2Interop.Extender<>(builder); + extender.setCaptureRequestOption( + CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, targetFpsRange + ); + } + + return builder.build(); } @NonNull diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java index 463491d00b6..ee33d17a4bc 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java @@ -32,9 +32,10 @@ public void pigeon_defaultConstructor_createsExpectedImageAnalysisInstance() { final ResolutionSelector mockResolutionSelector = new ResolutionSelector.Builder().build(); final long targetResolution = Surface.ROTATION_0; + final long targetFps = 30; final long outputImageFormat = ImageAnalysis.OUTPUT_IMAGE_FORMAT_NV21; final ImageAnalysis imageAnalysis = - api.pigeon_defaultConstructor(mockResolutionSelector, targetResolution, outputImageFormat); + api.pigeon_defaultConstructor(mockResolutionSelector, targetResolution, targetFps, outputImageFormat); assertEquals(imageAnalysis.getResolutionSelector(), mockResolutionSelector); assertEquals(imageAnalysis.getTargetRotation(), Surface.ROTATION_0); diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java index 0e2cd224288..120515b8734 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java @@ -36,8 +36,9 @@ public void pigeon_defaultConstructor_createsPreviewWithCorrectConfiguration() { final ResolutionSelector mockResolutionSelector = new ResolutionSelector.Builder().build(); final long targetResolution = Surface.ROTATION_0; + final long targetFps = 30; final Preview instance = - api.pigeon_defaultConstructor(mockResolutionSelector, targetResolution); + api.pigeon_defaultConstructor(mockResolutionSelector, targetResolution, targetFps); assertEquals(instance.getResolutionSelector(), mockResolutionSelector); assertEquals(instance.getTargetRotation(), Surface.ROTATION_0); diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/VideoCaptureTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/VideoCaptureTest.java index c59f4814b60..aa578b614ff 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/VideoCaptureTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/VideoCaptureTest.java @@ -13,9 +13,6 @@ import androidx.camera.video.VideoOutput; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.MockedStatic; -import org.mockito.Mockito; -import org.mockito.stubbing.Answer; import org.robolectric.RobolectricTestRunner; @RunWith(RobolectricTestRunner.class) @@ -25,17 +22,11 @@ public class VideoCaptureTest { public void withOutput_createsVideoCaptureWithVideoOutput() { final PigeonApiVideoCapture api = new TestProxyApiRegistrar().getPigeonApiVideoCapture(); - final VideoCapture instance = mock(VideoCapture.class); final VideoOutput videoOutput = mock(VideoOutput.class); + final long targetFps = 30; - try (MockedStatic mockedCamera2CameraInfo = - Mockito.mockStatic(VideoCapture.class)) { - mockedCamera2CameraInfo - .when(() -> VideoCapture.withOutput(videoOutput)) - .thenAnswer((Answer) invocation -> instance); - - assertEquals(api.withOutput(videoOutput), instance); - } + final VideoCapture videoCapture = api.withOutput(videoOutput, targetFps); + assertEquals(videoCapture.getOutput(), videoOutput); } @SuppressWarnings("unchecked") diff --git a/packages/camera/camera_android_camerax/example/lib/camera_controller.dart b/packages/camera/camera_android_camerax/example/lib/camera_controller.dart index 2974dbe64ee..d44421ef663 100644 --- a/packages/camera/camera_android_camerax/example/lib/camera_controller.dart +++ b/packages/camera/camera_android_camerax/example/lib/camera_controller.dart @@ -337,7 +337,8 @@ class CameraController extends ValueNotifier { (CameraInitializedEvent event) => event.focusPointSupported, ), ); - } on PlatformException catch (e) { + } on PlatformException catch (e, stacktrace) { + print(stacktrace); throw CameraException(e.code, e.message); } diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index f88abd5eb7e..3d66faa2ba8 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -288,6 +288,8 @@ class AndroidCameraCameraX extends CameraPlatform { /// The preset resolution selector for the camera. ResolutionSelector? _presetResolutionSelector; + int? _targetFps; + /// The ID of the surface texture that the camera preview is drawn to. late int _flutterSurfaceTextureId; @@ -408,6 +410,9 @@ class AndroidCameraCameraX extends CameraPlatform { _presetResolutionSelector = _getResolutionSelectorFromPreset( mediaSettings?.resolutionPreset, ); + + _targetFps = mediaSettings?.fps; + final QualitySelector? presetQualitySelector = _getQualitySelectorFromPreset(mediaSettings?.resolutionPreset); @@ -418,6 +423,7 @@ class AndroidCameraCameraX extends CameraPlatform { // Configure Preview instance. preview = proxy.newPreview( resolutionSelector: _presetResolutionSelector, + targetFps: _targetFps, /* use CameraX default target rotation */ targetRotation: null, ); _flutterSurfaceTextureId = await preview!.setSurfaceProvider( @@ -433,7 +439,10 @@ class AndroidCameraCameraX extends CameraPlatform { // Configure VideoCapture and Recorder instances. recorder = proxy.newRecorder(qualitySelector: presetQualitySelector); - videoCapture = proxy.withOutputVideoCapture(videoOutput: recorder!); + videoCapture = proxy.withOutputVideoCapture( + videoOutput: recorder!, + targetFps: _targetFps, + ); // Retrieve info required for correcting the rotation of the camera preview // if necessary. @@ -480,6 +489,7 @@ class AndroidCameraCameraX extends CameraPlatform { _imageAnalysisOutputFormatFromImageFormatGroup(imageFormatGroup); imageAnalysis = proxy.newImageAnalysis( resolutionSelector: _presetResolutionSelector, + targetFps: _targetFps, outputImageFormat: _imageAnalysisOutputImageFormat, /* use CameraX default target rotation */ targetRotation: null, ); diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart index cff83c85079..ebf36d6c2f8 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart @@ -3314,6 +3314,7 @@ class Preview extends UseCase { super.pigeon_instanceManager, this.resolutionSelector, int? targetRotation, + int? targetFps, }) : super.pigeon_detached() { final int pigeonVar_instanceIdentifier = pigeon_instanceManager .addDartCreatedInstance(this); @@ -3333,6 +3334,7 @@ class Preview extends UseCase { pigeonVar_instanceIdentifier, resolutionSelector, targetRotation, + targetFps, ], ); () async { @@ -3622,6 +3624,7 @@ class VideoCapture extends UseCase { super.pigeon_binaryMessenger, super.pigeon_instanceManager, required VideoOutput videoOutput, + int? targetFps, }) : super.pigeon_detached() { final int pigeonVar_instanceIdentifier = pigeon_instanceManager .addDartCreatedInstance(this); @@ -3637,7 +3640,7 @@ class VideoCapture extends UseCase { binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [pigeonVar_instanceIdentifier, videoOutput], + [pigeonVar_instanceIdentifier, videoOutput, targetFps], ); () async { final List? pigeonVar_replyList = @@ -5967,6 +5970,7 @@ class ImageAnalysis extends UseCase { super.pigeon_instanceManager, this.resolutionSelector, int? targetRotation, + int? targetFps, int? outputImageFormat, }) : super.pigeon_detached() { final int pigeonVar_instanceIdentifier = pigeon_instanceManager @@ -5987,6 +5991,7 @@ class ImageAnalysis extends UseCase { pigeonVar_instanceIdentifier, resolutionSelector, targetRotation, + targetFps, outputImageFormat, ]); () async { @@ -6793,7 +6798,7 @@ class ImageProxy extends PigeonInternalProxyApiBaseClass { } } -/// Utils for working with [ImageProxy]s. +/// Utilities for working with [ImageProxy]s. class ImageProxyUtils extends PigeonInternalProxyApiBaseClass { /// Constructs [ImageProxyUtils] without creating the associated native object. /// @@ -6863,8 +6868,7 @@ class ImageProxyUtils extends PigeonInternalProxyApiBaseClass { } } - /// Returns a single Byte Buffer that is representative of the [planes] - /// that are NV21 compatible. + /// Returns a single buffer that is representative of three NV21-compatible [planes]. static Future getNv21Buffer( int imageWidth, int imageHeight, diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_proxy.dart b/packages/camera/camera_android_camerax/lib/src/camerax_proxy.dart index 3885e720387..bf5b55b4d53 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_proxy.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_proxy.dart @@ -135,6 +135,7 @@ class CameraXProxy { /// Constructs [Preview]. final Preview Function({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, BinaryMessenger? pigeon_binaryMessenger, PigeonInstanceManager? pigeon_instanceManager, @@ -144,6 +145,7 @@ class CameraXProxy { /// Constructs [VideoCapture]. final VideoCapture Function({ required VideoOutput videoOutput, + int? targetFps, BinaryMessenger? pigeon_binaryMessenger, PigeonInstanceManager? pigeon_instanceManager, }) @@ -208,6 +210,7 @@ class CameraXProxy { /// Constructs [ImageAnalysis]. final ImageAnalysis Function({ int? targetRotation, + int? targetFps, int? outputImageFormat, ResolutionSelector? resolutionSelector, BinaryMessenger? pigeon_binaryMessenger, diff --git a/packages/camera/camera_android_camerax/pigeons/camerax_library.dart b/packages/camera/camera_android_camerax/pigeons/camerax_library.dart index 8d0a05fbf07..c963b958f6b 100644 --- a/packages/camera/camera_android_camerax/pigeons/camerax_library.dart +++ b/packages/camera/camera_android_camerax/pigeons/camerax_library.dart @@ -18,6 +18,7 @@ import 'package:pigeon/pigeon.dart'; ), ), ) + /// Immutable class for describing width and height dimensions in pixels. /// /// See https://developer.android.com/reference/android/util/Size.html. @@ -416,7 +417,7 @@ abstract class DeviceOrientationManager { ), ) abstract class Preview extends UseCase { - Preview(int? targetRotation); + Preview(int? targetRotation, int? targetFps); late final ResolutionSelector? resolutionSelector; @@ -455,7 +456,7 @@ abstract class Preview extends UseCase { ) abstract class VideoCapture extends UseCase { /// Create a `VideoCapture` associated with the given `VideoOutput`. - VideoCapture.withOutput(VideoOutput videoOutput); + VideoCapture.withOutput(VideoOutput videoOutput, int? targetFps); /// Gets the VideoOutput associated with this VideoCapture. VideoOutput getOutput(); @@ -803,7 +804,7 @@ abstract class ZoomState { ), ) abstract class ImageAnalysis extends UseCase { - ImageAnalysis(int? targetRotation, int? outputImageFormat); + ImageAnalysis(int? targetRotation, int? targetFps, int? outputImageFormat); late final ResolutionSelector? resolutionSelector; diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index 3df67d25f35..69ea994571a 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -145,6 +145,7 @@ void main() { fromQualitySelector, Preview Function({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -160,6 +161,7 @@ void main() { ResolutionSelector? resolutionSelector, int? outputImageFormat, int? targetRotation, + int? targetFps, })? newImageAnalysis, Analyzer Function({ @@ -220,6 +222,7 @@ void main() { newPreview ?? ({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -273,6 +276,7 @@ void main() { withOutputVideoCapture: ({ required VideoOutput videoOutput, + int? targetFps, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -284,6 +288,7 @@ void main() { newImageAnalysis ?? ({ int? targetRotation, + int? targetFps, int? outputImageFormat, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names @@ -888,6 +893,7 @@ void main() { newPreview: ({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -923,6 +929,7 @@ void main() { withOutputVideoCapture: ({ required VideoOutput videoOutput, + int? targetFps, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -933,6 +940,7 @@ void main() { newImageAnalysis: ({ int? targetRotation, + int? targetFps, int? outputImageFormat, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names @@ -1664,6 +1672,7 @@ void main() { newPreview: ({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -1704,6 +1713,7 @@ void main() { withOutputVideoCapture: ({ required VideoOutput videoOutput, + int? targetFps, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -1714,6 +1724,7 @@ void main() { newImageAnalysis: ({ int? targetRotation, + int? targetFps, int? outputImageFormat, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names @@ -2045,6 +2056,7 @@ void main() { newPreview: ({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -2193,6 +2205,7 @@ void main() { newPreview: ({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -2228,6 +2241,7 @@ void main() { withOutputVideoCapture: ({ required VideoOutput videoOutput, + int? targetFps, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -2238,6 +2252,7 @@ void main() { newImageAnalysis: ({ int? targetRotation, + int? targetFps, int? outputImageFormat, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names @@ -2528,6 +2543,7 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, ResolutionSelector? resolutionSelector, int? targetRotation, + int? targetFps, }) => mockPreview, ); @@ -2615,6 +2631,7 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, ResolutionSelector? resolutionSelector, int? targetRotation, + int? targetFps, int? outputImageFormat, }) { imageAnalysisOutputImageFormat = outputImageFormat; @@ -2628,6 +2645,7 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, ResolutionSelector? resolutionSelector, int? targetRotation, + int? targetFps, }) => mockPreview, ); @@ -2712,6 +2730,7 @@ void main() { newPreview: ({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -2741,6 +2760,7 @@ void main() { withOutputVideoCapture: ({ required VideoOutput videoOutput, + int? targetFps, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -2749,6 +2769,7 @@ void main() { newImageAnalysis: ({ int? targetRotation, + int? targetFps, int? outputImageFormat, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names @@ -4211,6 +4232,7 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, ResolutionSelector? resolutionSelector, int? targetRotation, + int? targetFps, }) { when( mockPreview.setSurfaceProvider(any), @@ -4262,6 +4284,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, required VideoOutput videoOutput, + int? targetFps, }) { return mockVideoCapture; }, @@ -4274,6 +4297,7 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, ResolutionSelector? resolutionSelector, int? targetRotation, + int? targetFps, }) { return mockImageAnalysis; }, @@ -4553,6 +4577,7 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, ResolutionSelector? resolutionSelector, int? targetRotation, + int? targetFps, }) { when( mockPreview.setSurfaceProvider(any), @@ -4604,6 +4629,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, required VideoOutput videoOutput, + int? targetFps, }) { return mockVideoCapture; }, @@ -4616,6 +4642,7 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, ResolutionSelector? resolutionSelector, int? targetRotation, + int? targetFps, }) { return mockImageAnalysis; }, @@ -5516,6 +5543,7 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, ResolutionSelector? resolutionSelector, int? targetRotation, + int? targetFps, }) => mockImageAnalysis, getNv21BufferImageProxyUtils: ( diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart index 1af9e9207f7..848d632c216 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart @@ -1168,6 +1168,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.ResolutionSelector? resolutionSelector, + int? targetFps, int? targetRotation, }) get newPreview => @@ -1178,6 +1179,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.ResolutionSelector? resolutionSelector, + int? targetFps, int? targetRotation, }) => _FakePreview_19(this, Invocation.getter(#newPreview)), returnValueForMissingStub: @@ -1185,6 +1187,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.ResolutionSelector? resolutionSelector, + int? targetFps, int? targetRotation, }) => _FakePreview_19(this, Invocation.getter(#newPreview)), ) @@ -1192,6 +1195,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.ResolutionSelector? resolutionSelector, + int? targetFps, int? targetRotation, })); @@ -1200,6 +1204,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { required _i2.VideoOutput videoOutput, _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, + int? targetFps, }) get withOutputVideoCapture => (super.noSuchMethod( @@ -1208,6 +1213,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { ({ _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, + int? targetFps, required _i2.VideoOutput videoOutput, }) => _FakeVideoCapture_20( this, @@ -1217,6 +1223,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { ({ _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, + int? targetFps, required _i2.VideoOutput videoOutput, }) => _FakeVideoCapture_20( this, @@ -1227,6 +1234,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { required _i2.VideoOutput videoOutput, _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, + int? targetFps, })); @override @@ -1478,6 +1486,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.ResolutionSelector? resolutionSelector, + int? targetFps, int? targetRotation, }) get newImageAnalysis => @@ -1489,6 +1498,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.ResolutionSelector? resolutionSelector, + int? targetFps, int? targetRotation, }) => _FakeImageAnalysis_26( this, @@ -1500,6 +1510,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.ResolutionSelector? resolutionSelector, + int? targetFps, int? targetRotation, }) => _FakeImageAnalysis_26( this, @@ -1511,6 +1522,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.ResolutionSelector? resolutionSelector, + int? targetFps, int? targetRotation, })); @@ -2215,6 +2227,42 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { ) as _i2.CameraCharacteristicsKey Function()); + @override + _i5.Future<_i9.Uint8List?> Function( + int, + int, + List<_i2.PlaneProxy>, { + _i8.BinaryMessenger? pigeon_binaryMessenger, + _i2.PigeonInstanceManager? pigeon_instanceManager, + }) + get getNv21BufferImageProxyUtils => + (super.noSuchMethod( + Invocation.getter(#getNv21BufferImageProxyUtils), + returnValue: + ( + int imageWidth, + int imageHeight, + List<_i2.PlaneProxy> planes, { + _i8.BinaryMessenger? pigeon_binaryMessenger, + _i2.PigeonInstanceManager? pigeon_instanceManager, + }) => _i5.Future<_i9.Uint8List?>.value(), + returnValueForMissingStub: + ( + int imageWidth, + int imageHeight, + List<_i2.PlaneProxy> planes, { + _i8.BinaryMessenger? pigeon_binaryMessenger, + _i2.PigeonInstanceManager? pigeon_instanceManager, + }) => _i5.Future<_i9.Uint8List?>.value(), + ) + as _i5.Future<_i9.Uint8List?> Function( + int, + int, + List<_i2.PlaneProxy>, { + _i8.BinaryMessenger? pigeon_binaryMessenger, + _i2.PigeonInstanceManager? pigeon_instanceManager, + })); + @override set withModeFocusMeteringActionBuilder( _i2.FocusMeteringActionBuilder Function({ diff --git a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart index 28177122de5..612aea13f20 100644 --- a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart +++ b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart @@ -110,6 +110,7 @@ void main() { newPreview: ({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -149,6 +150,7 @@ void main() { withOutputVideoCapture: ({ required VideoOutput videoOutput, + int? targetFps, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -159,6 +161,7 @@ void main() { newImageAnalysis: ({ int? targetRotation, + int? targetFps, ResolutionSelector? resolutionSelector, int? outputImageFormat, // ignore: non_constant_identifier_names From 9789f3db8c6bd02df788c3e658cf2bc8a37c59a5 Mon Sep 17 00:00:00 2001 From: Danang Rahmatullah Date: Sat, 25 Oct 2025 15:04:56 +0200 Subject: [PATCH 2/7] remove printing stacktrace --- .../camera_android_camerax/example/lib/camera_controller.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/camera/camera_android_camerax/example/lib/camera_controller.dart b/packages/camera/camera_android_camerax/example/lib/camera_controller.dart index d44421ef663..2974dbe64ee 100644 --- a/packages/camera/camera_android_camerax/example/lib/camera_controller.dart +++ b/packages/camera/camera_android_camerax/example/lib/camera_controller.dart @@ -337,8 +337,7 @@ class CameraController extends ValueNotifier { (CameraInitializedEvent event) => event.focusPointSupported, ), ); - } on PlatformException catch (e, stacktrace) { - print(stacktrace); + } on PlatformException catch (e) { throw CameraException(e.code, e.message); } From dbd0fe4d311a7564c8f1c63aec751d410d2eebd8 Mon Sep 17 00:00:00 2001 From: Danang Rahmatullah Date: Sat, 25 Oct 2025 15:14:34 +0200 Subject: [PATCH 3/7] format modified files --- .../plugins/camerax/CameraXLibrary.g.kt | 525 ++++++++---------- .../camerax/ImageAnalysisProxyApi.java | 4 +- .../plugins/camerax/PreviewProxyApi.java | 4 +- .../plugins/camerax/VideoCaptureProxyApi.java | 8 +- .../plugins/camerax/ImageAnalysisTest.java | 3 +- .../pigeons/camerax_library.dart | 1 - 6 files changed, 226 insertions(+), 319 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt index b98436c0248..c3055b17fdc 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt @@ -238,9 +238,8 @@ class CameraXLibraryPigeonInstanceManager( return } var reference: java.lang.ref.WeakReference? - while ( - (referenceQueue.poll() as java.lang.ref.WeakReference?).also { reference = it } != null - ) { + while ((referenceQueue.poll() as java.lang.ref.WeakReference?).also { reference = it } != + null) { val identifier = weakReferencesToIdentifiers.remove(reference) if (identifier != null) { weakInstances.remove(identifier) @@ -386,8 +385,7 @@ abstract class CameraXLibraryPigeonProxyApiRegistrar(val binaryMessenger: Binary } } } - } - ) + }) } /** @@ -864,38 +862,35 @@ private class CameraXLibraryPigeonProxyApiBaseCodec( } return instance } - else -> super.readValueOfType(type, buffer) } } override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { - if ( - value is Boolean || - value is ByteArray || - value is Double || - value is DoubleArray || - value is FloatArray || - value is Int || - value is IntArray || - value is List<*> || - value is Long || - value is LongArray || - value is Map<*, *> || - value is String || - value is InfoSupportedHardwareLevel || - value is AspectRatio || - value is CameraStateType || - value is LiveDataSupportedType || - value is VideoQuality || - value is MeteringMode || - value is LensFacing || - value is CameraXFlashMode || - value is ResolutionStrategyFallbackRule || - value is AspectRatioStrategyFallbackRule || - value is CameraStateErrorCode || - value == null - ) { + if (value is Boolean || + value is ByteArray || + value is Double || + value is DoubleArray || + value is FloatArray || + value is Int || + value is IntArray || + value is List<*> || + value is Long || + value is LongArray || + value is Map<*, *> || + value is String || + value is InfoSupportedHardwareLevel || + value is AspectRatio || + value is CameraStateType || + value is LiveDataSupportedType || + value is VideoQuality || + value is MeteringMode || + value is LensFacing || + value is CameraXFlashMode || + value is ResolutionStrategyFallbackRule || + value is AspectRatioStrategyFallbackRule || + value is CameraStateErrorCode || + value == null) { super.writeValue(stream, value) return } @@ -1013,11 +1008,9 @@ private class CameraXLibraryPigeonProxyApiBaseCodec( stream.write(128) writeValue(stream, registrar.instanceManager.getIdentifierForStrongReference(value)) } - else -> throw IllegalArgumentException( - "Unsupported value: '$value' of type '${value.javaClass.name}'" - ) + "Unsupported value: '$value' of type '${value.javaClass.name}'") } } } @@ -1368,51 +1361,40 @@ private open class CameraXLibraryPigeonCodec : StandardMessageCodec() { 129.toByte() -> { return (readValue(buffer) as Long?)?.let { InfoSupportedHardwareLevel.ofRaw(it.toInt()) } } - 130.toByte() -> { return (readValue(buffer) as Long?)?.let { AspectRatio.ofRaw(it.toInt()) } } - 131.toByte() -> { return (readValue(buffer) as Long?)?.let { CameraStateType.ofRaw(it.toInt()) } } - 132.toByte() -> { return (readValue(buffer) as Long?)?.let { LiveDataSupportedType.ofRaw(it.toInt()) } } - 133.toByte() -> { return (readValue(buffer) as Long?)?.let { VideoQuality.ofRaw(it.toInt()) } } - 134.toByte() -> { return (readValue(buffer) as Long?)?.let { MeteringMode.ofRaw(it.toInt()) } } - 135.toByte() -> { return (readValue(buffer) as Long?)?.let { LensFacing.ofRaw(it.toInt()) } } - 136.toByte() -> { return (readValue(buffer) as Long?)?.let { CameraXFlashMode.ofRaw(it.toInt()) } } - 137.toByte() -> { return (readValue(buffer) as Long?)?.let { ResolutionStrategyFallbackRule.ofRaw(it.toInt()) } } - 138.toByte() -> { return (readValue(buffer) as Long?)?.let { AspectRatioStrategyFallbackRule.ofRaw(it.toInt()) } } - 139.toByte() -> { return (readValue(buffer) as Long?)?.let { CameraStateErrorCode.ofRaw(it.toInt()) } } - else -> super.readValueOfType(type, buffer) } } @@ -1423,57 +1405,46 @@ private open class CameraXLibraryPigeonCodec : StandardMessageCodec() { stream.write(129) writeValue(stream, value.raw) } - is AspectRatio -> { stream.write(130) writeValue(stream, value.raw) } - is CameraStateType -> { stream.write(131) writeValue(stream, value.raw) } - is LiveDataSupportedType -> { stream.write(132) writeValue(stream, value.raw) } - is VideoQuality -> { stream.write(133) writeValue(stream, value.raw) } - is MeteringMode -> { stream.write(134) writeValue(stream, value.raw) } - is LensFacing -> { stream.write(135) writeValue(stream, value.raw) } - is CameraXFlashMode -> { stream.write(136) writeValue(stream, value.raw) } - is ResolutionStrategyFallbackRule -> { stream.write(137) writeValue(stream, value.raw) } - is AspectRatioStrategyFallbackRule -> { stream.write(138) writeValue(stream, value.raw) } - is CameraStateErrorCode -> { stream.write(139) writeValue(stream, value.raw) } - else -> super.writeValue(stream, value) } } @@ -1537,8 +1508,8 @@ abstract class PigeonApiCameraSize( fun pigeon_newInstance(pigeon_instanceArg: android.util.Size, callback: (Result) -> Unit) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1554,8 +1525,7 @@ abstract class PigeonApiCameraSize( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -1588,8 +1558,8 @@ abstract class PigeonApiResolutionInfo( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1605,8 +1575,7 @@ abstract class PigeonApiResolutionInfo( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -1681,8 +1650,8 @@ abstract class PigeonApiCameraIntegerRange( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1699,8 +1668,7 @@ abstract class PigeonApiCameraIntegerRange( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -1729,8 +1697,8 @@ open class PigeonApiVideoRecordEvent( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1745,8 +1713,7 @@ open class PigeonApiVideoRecordEvent( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -1775,8 +1742,8 @@ open class PigeonApiVideoRecordEventStart( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1791,8 +1758,7 @@ open class PigeonApiVideoRecordEventStart( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -1829,8 +1795,8 @@ open class PigeonApiVideoRecordEventFinalize( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1845,8 +1811,7 @@ open class PigeonApiVideoRecordEventFinalize( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -1920,8 +1885,8 @@ abstract class PigeonApiMeteringPoint( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -1935,8 +1900,7 @@ abstract class PigeonApiMeteringPoint( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -1999,8 +1963,8 @@ abstract class PigeonApiObserver(open val pigeonRegistrar: CameraXLibraryPigeonP ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2010,9 +1974,7 @@ abstract class PigeonApiObserver(open val pigeonRegistrar: CameraXLibraryPigeonP "new-instance-error", "Attempting to create a new Dart instance of Observer, but the class has a nonnull callback method.", "", - ) - ) - ) + ))) } } @@ -2024,8 +1986,8 @@ abstract class PigeonApiObserver(open val pigeonRegistrar: CameraXLibraryPigeonP ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -2137,8 +2099,8 @@ abstract class PigeonApiCameraInfo( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2154,8 +2116,7 @@ abstract class PigeonApiCameraInfo( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -2315,8 +2276,8 @@ abstract class PigeonApiCameraSelector( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2331,8 +2292,7 @@ abstract class PigeonApiCameraSelector( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -2548,8 +2508,8 @@ abstract class PigeonApiProcessCameraProvider( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2564,8 +2524,7 @@ abstract class PigeonApiProcessCameraProvider( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -2592,8 +2551,8 @@ open class PigeonApiUseCase(open val pigeonRegistrar: CameraXLibraryPigeonProxyA ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2607,8 +2566,7 @@ open class PigeonApiUseCase(open val pigeonRegistrar: CameraXLibraryPigeonProxyA if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -2676,8 +2634,8 @@ abstract class PigeonApiCamera(open val pigeonRegistrar: CameraXLibraryPigeonPro ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2692,8 +2650,7 @@ abstract class PigeonApiCamera(open val pigeonRegistrar: CameraXLibraryPigeonPro if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -2822,8 +2779,8 @@ abstract class PigeonApiSystemServicesManager( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2833,9 +2790,7 @@ abstract class PigeonApiSystemServicesManager( "new-instance-error", "Attempting to create a new Dart instance of SystemServicesManager, but the class has a nonnull callback method.", "", - ) - ) - ) + ))) } } @@ -2846,8 +2801,8 @@ abstract class PigeonApiSystemServicesManager( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -2886,8 +2841,8 @@ abstract class PigeonApiCameraPermissionsError( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -2904,8 +2859,7 @@ abstract class PigeonApiCameraPermissionsError( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -3075,8 +3029,8 @@ abstract class PigeonApiDeviceOrientationManager( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3086,9 +3040,7 @@ abstract class PigeonApiDeviceOrientationManager( "new-instance-error", "Attempting to create a new Dart instance of DeviceOrientationManager, but the class has a nonnull callback method.", "", - ) - ) - ) + ))) } } @@ -3099,8 +3051,8 @@ abstract class PigeonApiDeviceOrientationManager( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -3340,8 +3292,8 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3356,8 +3308,7 @@ abstract class PigeonApiPreview(open val pigeonRegistrar: CameraXLibraryPigeonPr if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -3493,8 +3444,8 @@ abstract class PigeonApiVideoCapture( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3508,8 +3459,7 @@ abstract class PigeonApiVideoCapture( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -3542,8 +3492,8 @@ open class PigeonApiVideoOutput(open val pigeonRegistrar: CameraXLibraryPigeonPr ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3557,8 +3507,7 @@ open class PigeonApiVideoOutput(open val pigeonRegistrar: CameraXLibraryPigeonPr if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -3743,8 +3692,8 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3758,8 +3707,7 @@ abstract class PigeonApiRecorder(open val pigeonRegistrar: CameraXLibraryPigeonP if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -3831,8 +3779,8 @@ abstract class PigeonApiVideoRecordEventListener( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -3842,9 +3790,7 @@ abstract class PigeonApiVideoRecordEventListener( "new-instance-error", "Attempting to create a new Dart instance of VideoRecordEventListener, but the class has a nonnull callback method.", "", - ) - ) - ) + ))) } } @@ -3855,8 +3801,8 @@ abstract class PigeonApiVideoRecordEventListener( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -4000,8 +3946,8 @@ abstract class PigeonApiPendingRecording( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4016,8 +3962,7 @@ abstract class PigeonApiPendingRecording( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -4163,8 +4108,8 @@ abstract class PigeonApiRecording(open val pigeonRegistrar: CameraXLibraryPigeon ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4178,8 +4123,7 @@ abstract class PigeonApiRecording(open val pigeonRegistrar: CameraXLibraryPigeon if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -4350,8 +4294,8 @@ abstract class PigeonApiImageCapture( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4366,8 +4310,7 @@ abstract class PigeonApiImageCapture( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -4535,8 +4478,8 @@ abstract class PigeonApiResolutionStrategy( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4551,8 +4494,7 @@ abstract class PigeonApiResolutionStrategy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -4675,8 +4617,8 @@ abstract class PigeonApiResolutionSelector( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4693,8 +4635,7 @@ abstract class PigeonApiResolutionSelector( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -4895,8 +4836,8 @@ abstract class PigeonApiAspectRatioStrategy( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4911,8 +4852,7 @@ abstract class PigeonApiAspectRatioStrategy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -4949,8 +4889,8 @@ abstract class PigeonApiCameraState( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -4966,8 +4906,7 @@ abstract class PigeonApiCameraState( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -5007,8 +4946,8 @@ abstract class PigeonApiExposureState( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5021,20 +4960,19 @@ abstract class PigeonApiExposureState( val channelName = "dev.flutter.pigeon.camera_android_camerax.ExposureState.pigeon_newInstance" val channel = BasicMessageChannel(binaryMessenger, channelName, codec) channel.send( - listOf(pigeon_identifierArg, exposureCompensationRangeArg, exposureCompensationStepArg) - ) { - if (it is List<*>) { - if (it.size > 1) { - callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) - } else { - callback(Result.success(Unit)) + listOf(pigeon_identifierArg, exposureCompensationRangeArg, exposureCompensationStepArg)) { + if (it is List<*>) { + if (it.size > 1) { + callback( + Result.failure( + CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + } else { + callback(Result.success(Unit)) + } + } else { + callback(Result.failure(CameraXLibraryPigeonUtils.createConnectionError(channelName))) + } } - } else { - callback(Result.failure(CameraXLibraryPigeonUtils.createConnectionError(channelName))) - } - } } } } @@ -5060,8 +4998,8 @@ abstract class PigeonApiZoomState(open val pigeonRegistrar: CameraXLibraryPigeon ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5077,8 +5015,7 @@ abstract class PigeonApiZoomState(open val pigeonRegistrar: CameraXLibraryPigeon if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -5251,8 +5188,8 @@ abstract class PigeonApiImageAnalysis( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5267,8 +5204,7 @@ abstract class PigeonApiImageAnalysis( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -5337,8 +5273,8 @@ abstract class PigeonApiAnalyzer(open val pigeonRegistrar: CameraXLibraryPigeonP ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5348,9 +5284,7 @@ abstract class PigeonApiAnalyzer(open val pigeonRegistrar: CameraXLibraryPigeonP "new-instance-error", "Attempting to create a new Dart instance of Analyzer, but the class has a nonnull callback method.", "", - ) - ) - ) + ))) } } @@ -5362,8 +5296,8 @@ abstract class PigeonApiAnalyzer(open val pigeonRegistrar: CameraXLibraryPigeonP ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) return } val binaryMessenger = pigeonRegistrar.binaryMessenger @@ -5406,8 +5340,8 @@ abstract class PigeonApiCameraStateStateError( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5423,8 +5357,7 @@ abstract class PigeonApiCameraStateStateError( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -5557,8 +5490,8 @@ abstract class PigeonApiLiveData(open val pigeonRegistrar: CameraXLibraryPigeonP ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5573,8 +5506,7 @@ abstract class PigeonApiLiveData(open val pigeonRegistrar: CameraXLibraryPigeonP if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -5674,8 +5606,8 @@ abstract class PigeonApiImageProxy( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5692,8 +5624,7 @@ abstract class PigeonApiImageProxy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -5754,8 +5685,8 @@ abstract class PigeonApiImageProxyUtils( fun pigeon_newInstance(pigeon_instanceArg: ImageProxyUtils, callback: (Result) -> Unit) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5770,8 +5701,7 @@ abstract class PigeonApiImageProxyUtils( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -5809,8 +5739,8 @@ abstract class PigeonApiPlaneProxy( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5827,8 +5757,7 @@ abstract class PigeonApiPlaneProxy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -5965,8 +5894,8 @@ abstract class PigeonApiQualitySelector( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -5981,8 +5910,7 @@ abstract class PigeonApiQualitySelector( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -6159,8 +6087,8 @@ abstract class PigeonApiFallbackStrategy( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6175,8 +6103,7 @@ abstract class PigeonApiFallbackStrategy( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -6375,8 +6302,8 @@ abstract class PigeonApiCameraControl( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6390,8 +6317,7 @@ abstract class PigeonApiCameraControl( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -6620,8 +6546,8 @@ abstract class PigeonApiFocusMeteringActionBuilder( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6636,8 +6562,7 @@ abstract class PigeonApiFocusMeteringActionBuilder( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -6686,8 +6611,8 @@ abstract class PigeonApiFocusMeteringAction( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6709,20 +6634,19 @@ abstract class PigeonApiFocusMeteringAction( meteringPointsAfArg, meteringPointsAwbArg, isAutoCancelEnabledArg, - ) - ) { - if (it is List<*>) { - if (it.size > 1) { - callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) - } else { - callback(Result.success(Unit)) + )) { + if (it is List<*>) { + if (it.size > 1) { + callback( + Result.failure( + CameraXError(it[0] as String, it[1] as String, it[2] as String?))) + } else { + callback(Result.success(Unit)) + } + } else { + callback(Result.failure(CameraXLibraryPigeonUtils.createConnectionError(channelName))) + } } - } else { - callback(Result.failure(CameraXLibraryPigeonUtils.createConnectionError(channelName))) - } - } } } } @@ -6747,8 +6671,8 @@ abstract class PigeonApiFocusMeteringResult( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6764,8 +6688,7 @@ abstract class PigeonApiFocusMeteringResult( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -6838,8 +6761,8 @@ abstract class PigeonApiCaptureRequest( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6854,8 +6777,7 @@ abstract class PigeonApiCaptureRequest( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -6885,8 +6807,8 @@ open class PigeonApiCaptureRequestKey( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -6901,8 +6823,7 @@ open class PigeonApiCaptureRequestKey( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -7005,8 +6926,8 @@ abstract class PigeonApiCaptureRequestOptions( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7021,8 +6942,7 @@ abstract class PigeonApiCaptureRequestOptions( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -7127,8 +7047,8 @@ abstract class PigeonApiCamera2CameraControl( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7143,8 +7063,7 @@ abstract class PigeonApiCamera2CameraControl( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -7214,8 +7133,8 @@ abstract class PigeonApiResolutionFilter( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7230,8 +7149,7 @@ abstract class PigeonApiResolutionFilter( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -7263,8 +7181,8 @@ open class PigeonApiCameraCharacteristicsKey( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7279,8 +7197,7 @@ open class PigeonApiCameraCharacteristicsKey( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -7392,8 +7309,8 @@ abstract class PigeonApiCameraCharacteristics( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7408,8 +7325,7 @@ abstract class PigeonApiCameraCharacteristics( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -7537,8 +7453,8 @@ abstract class PigeonApiCamera2CameraInfo( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7553,8 +7469,7 @@ abstract class PigeonApiCamera2CameraInfo( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -7659,8 +7574,8 @@ abstract class PigeonApiMeteringPointFactory( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7675,8 +7590,7 @@ abstract class PigeonApiMeteringPointFactory( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } @@ -7760,8 +7674,8 @@ abstract class PigeonApiDisplayOrientedMeteringPointFactory( ) { if (pigeonRegistrar.ignoreCallsToDart) { callback( - Result.failure(CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", "")) - ) + Result.failure( + CameraXError("ignore-calls-error", "Calls to Dart are being ignored.", ""))) } else if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) { callback(Result.success(Unit)) } else { @@ -7776,8 +7690,7 @@ abstract class PigeonApiDisplayOrientedMeteringPointFactory( if (it is List<*>) { if (it.size > 1) { callback( - Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?)) - ) + Result.failure(CameraXError(it[0] as String, it[1] as String, it[2] as String?))) } else { callback(Result.success(Unit)) } diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageAnalysisProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageAnalysisProxyApi.java index 8391e363610..0c88a4d6d63 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageAnalysisProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ImageAnalysisProxyApi.java @@ -46,9 +46,7 @@ public ImageAnalysis pigeon_defaultConstructor( if (targetFps != null) { Range targetFpsRange = new Range<>(targetFps.intValue(), targetFps.intValue()); Camera2Interop.Extender extender = new Camera2Interop.Extender<>(builder); - extender.setCaptureRequestOption( - CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, targetFpsRange - ); + extender.setCaptureRequestOption(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, targetFpsRange); } return builder.build(); diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 07f1cb4ef80..61fec2493b9 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -58,9 +58,7 @@ public Preview pigeon_defaultConstructor( if (targetFps != null) { Range targetFpsRange = new Range<>(targetFps.intValue(), targetFps.intValue()); Camera2Interop.Extender extender = new Camera2Interop.Extender<>(builder); - extender.setCaptureRequestOption( - CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, targetFpsRange - ); + extender.setCaptureRequestOption(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, targetFpsRange); } return builder.build(); diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/VideoCaptureProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/VideoCaptureProxyApi.java index 3924a3c3b68..e9fd9e490b4 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/VideoCaptureProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/VideoCaptureProxyApi.java @@ -6,7 +6,6 @@ import android.hardware.camera2.CaptureRequest; import android.util.Range; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.OptIn; @@ -33,10 +32,9 @@ public VideoCapture withOutput(@NonNull VideoOutput videoOutput, @Nullable Lo if (targetFps != null) { Range targetFpsRange = new Range<>(targetFps.intValue(), targetFps.intValue()); - Camera2Interop.Extender> extender = new Camera2Interop.Extender<>(builder); - extender.setCaptureRequestOption( - CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, targetFpsRange - ); + Camera2Interop.Extender> extender = + new Camera2Interop.Extender<>(builder); + extender.setCaptureRequestOption(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, targetFpsRange); } return builder.build(); diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java index ee33d17a4bc..a1099f9ba61 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java @@ -35,7 +35,8 @@ public void pigeon_defaultConstructor_createsExpectedImageAnalysisInstance() { final long targetFps = 30; final long outputImageFormat = ImageAnalysis.OUTPUT_IMAGE_FORMAT_NV21; final ImageAnalysis imageAnalysis = - api.pigeon_defaultConstructor(mockResolutionSelector, targetResolution, targetFps, outputImageFormat); + api.pigeon_defaultConstructor( + mockResolutionSelector, targetResolution, targetFps, outputImageFormat); assertEquals(imageAnalysis.getResolutionSelector(), mockResolutionSelector); assertEquals(imageAnalysis.getTargetRotation(), Surface.ROTATION_0); diff --git a/packages/camera/camera_android_camerax/pigeons/camerax_library.dart b/packages/camera/camera_android_camerax/pigeons/camerax_library.dart index c963b958f6b..3839c38d336 100644 --- a/packages/camera/camera_android_camerax/pigeons/camerax_library.dart +++ b/packages/camera/camera_android_camerax/pigeons/camerax_library.dart @@ -18,7 +18,6 @@ import 'package:pigeon/pigeon.dart'; ), ), ) - /// Immutable class for describing width and height dimensions in pixels. /// /// See https://developer.android.com/reference/android/util/Size.html. From 6e0079084e231545a2b1d401cb7ea8364afc1514 Mon Sep 17 00:00:00 2001 From: Danang Rahmatullah Date: Sat, 25 Oct 2025 15:18:21 +0200 Subject: [PATCH 4/7] bump camera_android_camerax version 0.6.25 --- packages/camera/camera_android_camerax/CHANGELOG.md | 4 ++++ packages/camera/camera_android_camerax/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 276d08aa836..4a4b7ab5b58 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.25 + +* Use `MediaSettings::fps` for camera preview, image streaming, and video recording. + ## 0.6.24 * Change plugin to assume mp4 format for capture videos. diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 12d68972dc6..2894f4fa9b1 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_android_camerax description: Android implementation of the camera plugin using the CameraX library. 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.6.24 +version: 0.6.25 environment: sdk: ^3.9.0 From a48a9e5df48c120fe461108e30e69c794c0b1755 Mon Sep 17 00:00:00 2001 From: Danang Rahmatullah Date: Sat, 25 Oct 2025 15:23:23 +0200 Subject: [PATCH 5/7] document targetFps variable --- .../camera_android_camerax/lib/src/android_camera_camerax.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index 3d66faa2ba8..24c079221d7 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -288,6 +288,7 @@ class AndroidCameraCameraX extends CameraPlatform { /// The preset resolution selector for the camera. ResolutionSelector? _presetResolutionSelector; + /// The configured target FPS for the camera. int? _targetFps; /// The ID of the surface texture that the camera preview is drawn to. From 3404a0bf37c40057a5dd8df2d63abebfcd01ae95 Mon Sep 17 00:00:00 2001 From: Danang Rahmatullah Date: Sat, 25 Oct 2025 15:39:59 +0200 Subject: [PATCH 6/7] assert Camera2Interop.Extender is constructed --- .../plugins/camerax/ImageAnalysisTest.java | 29 +++++++++++++++---- .../flutter/plugins/camerax/PreviewTest.java | 26 ++++++++++++++--- .../plugins/camerax/VideoCaptureTest.java | 21 ++++++++++++-- 3 files changed, 64 insertions(+), 12 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java index a1099f9ba61..0a37902fdb8 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ImageAnalysisTest.java @@ -11,7 +11,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.hardware.camera2.CaptureRequest; +import android.util.Range; import android.view.Surface; +import androidx.camera.camera2.interop.Camera2Interop; import androidx.camera.core.ImageAnalysis; import androidx.camera.core.ImageAnalysis.Analyzer; import androidx.camera.core.resolutionselector.ResolutionSelector; @@ -19,6 +22,7 @@ import java.util.concurrent.Executor; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.MockedConstruction; import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.stubbing.Answer; @@ -26,6 +30,7 @@ @RunWith(RobolectricTestRunner.class) public class ImageAnalysisTest { + @SuppressWarnings({"unchecked", "rawtypes"}) @Test public void pigeon_defaultConstructor_createsExpectedImageAnalysisInstance() { final PigeonApiImageAnalysis api = new TestProxyApiRegistrar().getPigeonApiImageAnalysis(); @@ -34,13 +39,25 @@ public void pigeon_defaultConstructor_createsExpectedImageAnalysisInstance() { final long targetResolution = Surface.ROTATION_0; final long targetFps = 30; final long outputImageFormat = ImageAnalysis.OUTPUT_IMAGE_FORMAT_NV21; - final ImageAnalysis imageAnalysis = - api.pigeon_defaultConstructor( - mockResolutionSelector, targetResolution, targetFps, outputImageFormat); - assertEquals(imageAnalysis.getResolutionSelector(), mockResolutionSelector); - assertEquals(imageAnalysis.getTargetRotation(), Surface.ROTATION_0); - assertEquals(imageAnalysis.getOutputImageFormat(), ImageAnalysis.OUTPUT_IMAGE_FORMAT_NV21); + try (MockedConstruction mockCamera2InteropExtender = + Mockito.mockConstruction( + Camera2Interop.Extender.class, + (mock, context) -> { + when(mock.setCaptureRequestOption( + CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, + new Range<>(targetFps, targetFps))) + .thenReturn(mock); + })) { + final ImageAnalysis imageAnalysis = + api.pigeon_defaultConstructor( + mockResolutionSelector, targetResolution, targetFps, outputImageFormat); + + assertEquals(mockResolutionSelector, imageAnalysis.getResolutionSelector()); + assertEquals(Surface.ROTATION_0, imageAnalysis.getTargetRotation()); + assertEquals(1, mockCamera2InteropExtender.constructed().size()); + assertEquals(ImageAnalysis.OUTPUT_IMAGE_FORMAT_NV21, imageAnalysis.getOutputImageFormat()); + } } @Test diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java index 120515b8734..e00573d8c40 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java @@ -13,9 +13,12 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import android.hardware.camera2.CaptureRequest; +import android.util.Range; import android.util.Size; import android.view.Surface; import androidx.annotation.NonNull; +import androidx.camera.camera2.interop.Camera2Interop; import androidx.camera.core.Preview; import androidx.camera.core.ResolutionInfo; import androidx.camera.core.SurfaceRequest; @@ -26,10 +29,13 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; +import org.mockito.MockedConstruction; +import org.mockito.Mockito; import org.robolectric.RobolectricTestRunner; @RunWith(RobolectricTestRunner.class) public class PreviewTest { + @SuppressWarnings({"unchecked", "rawtypes"}) @Test public void pigeon_defaultConstructor_createsPreviewWithCorrectConfiguration() { final PigeonApiPreview api = new TestProxyApiRegistrar().getPigeonApiPreview(); @@ -37,11 +43,23 @@ public void pigeon_defaultConstructor_createsPreviewWithCorrectConfiguration() { final ResolutionSelector mockResolutionSelector = new ResolutionSelector.Builder().build(); final long targetResolution = Surface.ROTATION_0; final long targetFps = 30; - final Preview instance = - api.pigeon_defaultConstructor(mockResolutionSelector, targetResolution, targetFps); - assertEquals(instance.getResolutionSelector(), mockResolutionSelector); - assertEquals(instance.getTargetRotation(), Surface.ROTATION_0); + try (MockedConstruction mockCamera2InteropExtender = + Mockito.mockConstruction( + Camera2Interop.Extender.class, + (mock, context) -> { + when(mock.setCaptureRequestOption( + CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, + new Range<>(targetFps, targetFps))) + .thenReturn(mock); + })) { + final Preview instance = + api.pigeon_defaultConstructor(mockResolutionSelector, targetResolution, targetFps); + + assertEquals(mockResolutionSelector, instance.getResolutionSelector()); + assertEquals(Surface.ROTATION_0, instance.getTargetRotation()); + assertEquals(1, mockCamera2InteropExtender.constructed().size()); + } } @Test diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/VideoCaptureTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/VideoCaptureTest.java index aa578b614ff..8136703dcfa 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/VideoCaptureTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/VideoCaptureTest.java @@ -9,10 +9,15 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.hardware.camera2.CaptureRequest; +import android.util.Range; +import androidx.camera.camera2.interop.Camera2Interop; import androidx.camera.video.VideoCapture; import androidx.camera.video.VideoOutput; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.MockedConstruction; +import org.mockito.Mockito; import org.robolectric.RobolectricTestRunner; @RunWith(RobolectricTestRunner.class) @@ -25,8 +30,20 @@ public void withOutput_createsVideoCaptureWithVideoOutput() { final VideoOutput videoOutput = mock(VideoOutput.class); final long targetFps = 30; - final VideoCapture videoCapture = api.withOutput(videoOutput, targetFps); - assertEquals(videoCapture.getOutput(), videoOutput); + try (MockedConstruction mockCamera2InteropExtender = + Mockito.mockConstruction( + Camera2Interop.Extender.class, + (mock, context) -> { + when(mock.setCaptureRequestOption( + CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, + new Range<>(targetFps, targetFps))) + .thenReturn(mock); + })) { + final VideoCapture videoCapture = api.withOutput(videoOutput, targetFps); + + assertEquals(1, mockCamera2InteropExtender.constructed().size()); + assertEquals(videoOutput, videoCapture.getOutput()); + } } @SuppressWarnings("unchecked") From 4abed1838a6160518879f8c86272ae9865d63d35 Mon Sep 17 00:00:00 2001 From: Danang Rahmatullah Date: Wed, 29 Oct 2025 20:31:24 +0100 Subject: [PATCH 7/7] add CameraController fps dart test --- .../test/android_camera_camerax_test.dart | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index 69ea994571a..04ae93a1307 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -153,6 +153,15 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, })? newPreview, + VideoCapture Function({ + required VideoOutput videoOutput, + int? targetFps, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + })? + withOutputVideoCapture, ImageAnalysis Function({ // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -274,6 +283,7 @@ void main() { return mockRecorder; }, withOutputVideoCapture: + withOutputVideoCapture ?? ({ required VideoOutput videoOutput, int? targetFps, @@ -2093,6 +2103,101 @@ void main() { }, ); + test( + 'createCamera and initializeCamera sets targetFps as expected', + () async { + final AndroidCameraCameraX camera = AndroidCameraCameraX(); + const CameraLensDirection testLensDirection = CameraLensDirection.back; + const int testSensorOrientation = 90; + const CameraDescription testCameraDescription = CameraDescription( + name: 'cameraName', + lensDirection: testLensDirection, + sensorOrientation: testSensorOrientation, + ); + const int fastTargetFps = 60; + const int testCameraId = 12; + final MockCamera mockCamera = MockCamera(); + + // Mock/Detached objects for (typically attached) objects created by + // createCamera. + final MockProcessCameraProvider mockProcessCameraProvider = + MockProcessCameraProvider(); + final MockCameraInfo mockCameraInfo = MockCameraInfo(); + + when( + mockProcessCameraProvider.bindToLifecycle(any, any), + ).thenAnswer((_) async => mockCamera); + when(mockCamera.getCameraInfo()).thenAnswer((_) async => mockCameraInfo); + when( + mockCameraInfo.getCameraState(), + ).thenAnswer((_) async => MockLiveCameraState()); + camera.processCameraProvider = mockProcessCameraProvider; + + int? targetPreviewFps; + int? targetVideoCaptureFps; + int? targetImageAnalysisFps; + + camera.proxy = getProxyForTestingUseCaseConfiguration( + mockProcessCameraProvider, + newPreview: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + ResolutionSelector? resolutionSelector, + int? targetFps, + int? targetRotation, + }) { + targetPreviewFps = targetFps; + final MockPreview mockPreview = MockPreview(); + final ResolutionInfo testResolutionInfo = + ResolutionInfo.pigeon_detached(resolution: MockCameraSize()); + when( + mockPreview.getResolutionInfo(), + ).thenAnswer((_) async => testResolutionInfo); + return mockPreview; + }, + withOutputVideoCapture: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + int? targetFps, + required VideoOutput videoOutput, + }) { + targetVideoCaptureFps = targetFps; + return MockVideoCapture(); + }, + newImageAnalysis: + ({ + int? outputImageFormat, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + ResolutionSelector? resolutionSelector, + int? targetFps, + int? targetRotation, + }) { + targetImageAnalysisFps = targetFps; + return MockImageAnalysis(); + }, + ); + + await camera.createCameraWithSettings( + testCameraDescription, + const MediaSettings(fps: fastTargetFps), + ); + await camera.initializeCamera(testCameraId); + + expect(targetPreviewFps, fastTargetFps); + expect(targetVideoCaptureFps, fastTargetFps); + expect(targetImageAnalysisFps, fastTargetFps); + }, + ); + test( 'createCamera properly selects specific back camera by specifying a CameraInfo', () async {