Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
743b38d
Merge remote-tracking branch 'upstream/main' into camx_occ
camsim99 May 1, 2023
4427ac6
Undo changes
camsim99 May 10, 2023
3f9cf35
Start wrapping
camsim99 Nov 27, 2023
c37e8cd
Progress, left todo as marker
camsim99 Dec 13, 2023
ad9c29c
More wrapping, start with meteringpoint
camsim99 Dec 13, 2023
8472b7c
Wrapping
camsim99 Dec 26, 2023
886706b
New files
camsim99 Dec 27, 2023
51da157
Finish non cam2 wrpaping
camsim99 Jan 2, 2024
d157b46
Adding tests + docs
camsim99 Jan 3, 2024
4a0872c
More wrapping and tests
camsim99 Jan 4, 2024
aa0f947
More wrapping, tests
camsim99 Jan 5, 2024
05b784d
Final inital wrapping
camsim99 Jan 5, 2024
36257d4
java formatting + fix dart tests
camsim99 Jan 5, 2024
a9af98d
Fix Java classes
camsim99 Jan 8, 2024
4af2266
Get tests running
camsim99 Jan 8, 2024
fb7927b
Fix java tests
camsim99 Jan 8, 2024
b5e974c
Bump version
camsim99 Jan 8, 2024
ba95c41
Self review
camsim99 Jan 9, 2024
c435903
Merge remote-tracking branch 'upstream/main' into camx_cc
camsim99 Jan 9, 2024
be193db
Merge branch 'main' into camx_cc
camsim99 Jan 9, 2024
2e69a9c
Nits
camsim99 Jan 9, 2024
cc4ecee
Merge remote-tracking branch 'refs/remotes/origin/camx_cc' into camx_cc
camsim99 Jan 9, 2024
643fabb
lint
camsim99 Jan 9, 2024
36d9a2e
Update packages/camera/camera_android_camerax/pigeons/camerax_library…
camsim99 Jan 24, 2024
92157c4
Update packages/camera/camera_android_camerax/android/src/test/java/i…
camsim99 Jan 24, 2024
9977463
Update packages/camera/camera_android_camerax/lib/src/camera_control.…
camsim99 Jan 24, 2024
469d0cd
Merge remote-tracking branch 'upstream/main' into camx_cc
camsim99 Jan 24, 2024
cdfd98c
format
camsim99 Jan 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Wrapping
  • Loading branch information
camsim99 committed Jan 2, 2024
commit 8472b7ca3b2e98d626b87e1f966bc3fc2192b89a
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ public void onFailure(Throwable t) {
ContextCompat.getMainExecutor(context));
}

@NonNull
public void startFocusAndMetering(
@NonNull CameraControl cameraControl,
@NonNull FocusMeteringAction focusMeteringAction,
Expand All @@ -101,6 +100,39 @@ public void onFailure(Throwable t) {
},
ContextCompat.getMainExecutor(context));
}

public void cancelFocusAndMetering(@NonNull CameraControl cameraControl, @NonNull Result<Void> result) {
ListenableFuture<Void> cancelFocusAndMeteringFuture = cameraControl.cancelFocusAndMetering();

Futures.addCallback(
cancelFocusAndMeteringFuture,
new FutureCallback<Void>() {
public void onSuccess(Void voidResult) {
result.success(null);
}

public void onFailure(Throwable t) {
result.error(t);
}
},
ContextCompat.getMainExecutor(context));
}

public void setExposureCompensationIndex(@NonNull CameraControl cameraControl, @NonNull Long index, @NonNull Result<Long> result) {
ListenableFuture<Integer> setExposureCompensationIndexFuture = cameraControl.setExposureCompensationIndex(index.intValue());

Futures.addCallback(
setExposureCompensationIndexFuture,
new FutureCallback<Integer>() {
public void onSuccess(Integer integerResult) {
result.success(integerResult);
}

public void onFailure(Throwable t) {
result.error(t);
}
},
ContextCompat.getMainExecutor(context));
}

/**
Expand Down Expand Up @@ -166,6 +198,17 @@ public void startFocusAndMetering(
result);
}

@Override
public void cancelFocusAndMetering(@NonNull Long identifier, @NonNull Result<Void> result) {
proxy.cancelFocusAndMetering(getCameraControlInstance(identifier), result);
}

@Override
public void setExposureCompensationIndex(@NonNull Long identifier, @NonNull Long index, @NonNull Result<Long> result) {
proxy.setExposureCompensationIndex(getCameraControlInstance(identifier), index, result);
}


private CameraControl getCameraControlInstance(@NonNull Long identifier) {
return Objects.requireNonNull(instanceManager.getInstance(identifier));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:meta/meta.dart' show immutable;

import 'android_camera_camerax_flutter_api_impls.dart';
import 'camerax_library.g.dart';
import 'focus_metering_action.dart';
import 'focus_metering_result.dart';
import 'instance_manager.dart';
import 'java_object.dart';
Expand Down Expand Up @@ -50,25 +51,25 @@ class CameraControl extends JavaObject {
return _api.setZoomRatioFromInstance(this, ratio);
}

/// Set the exposure compensation value for related [Camera].
///
/// Returns null if the exposure compensation index failed to be set.
Future<int?> setExposureCompensationIndex(int index) async {
return _api.setExposureCompensationIndexFromInstance(this, index);
}

/// Starts a focus and metering action configured by the [FocusMeteringAction].
///
/// will trigger an auto focus action and enable auto focus (AF)/auto exposure
/// (AE)/auto white balance (AWB) metering regions.
Future<FocusMeteringResult> startFocusAndMetering(
Future<FocusMeteringResult?> startFocusAndMetering(
FocusMeteringAction action) {
return _api.startFocusAndMeteringFromInstance(this, action);
}

/// Cancels current FocusMeteringAction and clears AF/AE/AWB regions.
Future<void> cancelFocusAndMetering() =>
_api.cancelFocusAndMeteringFromInstance(this);

/// Set the exposure compensation value for related [Camera].
///
/// Returns null if the exposure compensation index failed to be set.
Future<int?> setExposureCompensationIndex(int index) async {
return _api.setExposureCompensationIndexFromInstance(this, index);
}
}

/// Host API implementation of [CameraControl].
Expand Down Expand Up @@ -116,19 +117,6 @@ class _CameraControlHostApiImpl extends CameraControlHostApi {
}
}

/// Sets exposure compensation index for specified [CameraControl] instance.
Future<int?> setExposureCompensationIndexFromInstance(
CameraControl instance, int index) async {
final int identifier = instanceManager.getIdentifier(instance)!;
try {
return setExposureCompensationIndex(identifier, index);
} on PlatformException catch (e) {
SystemServices.cameraErrorStreamController.add(
e.message ?? 'Setting the camera xposure compensation index failed.');
return Future<int?>.value();
}
}

/// Starts a focus and metering action configured by the [FocusMeteringAction]
/// for the specified [CameraControl] instance.
Future<FocusMeteringResult?> startFocusAndMeteringFromInstance(
Expand All @@ -155,6 +143,19 @@ class _CameraControlHostApiImpl extends CameraControlHostApi {
final int identifier = instanceManager.getIdentifier(instance)!;
await cancelFocusAndMetering(identifier);
}

/// Sets exposure compensation index for specified [CameraControl] instance.
Future<int?> setExposureCompensationIndexFromInstance(
CameraControl instance, int index) async {
final int identifier = instanceManager.getIdentifier(instance)!;
try {
return setExposureCompensationIndex(identifier, index);
} on PlatformException catch (e) {
SystemServices.cameraErrorStreamController.add(
e.message ?? 'Setting the camera xposure compensation index failed.');
return Future<int?>.value();
}
}
}

/// Flutter API implementation of [CameraControl].
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:meta/meta.dart' show immutable;
import 'android_camera_camerax_flutter_api_impls.dart';
import 'camerax_library.g.dart';
import 'instance_manager.dart';
import 'metering_point.dart';
import 'java_object.dart';

/// somethin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ class MeteringPoint extends JavaObject {
MeteringPoint({
BinaryMessenger? binaryMessenger,
InstanceManager? instanceManager,
required double x,
required double y,
required double? size,
required this.x,
required this.y,
required this.size,
}) : super.detached(
binaryMessenger: binaryMessenger,
instanceManager: instanceManager,
Expand All @@ -35,6 +35,9 @@ class MeteringPoint extends JavaObject {
MeteringPoint.detached({
BinaryMessenger? binaryMessenger,
InstanceManager? instanceManager,
required this.x,
required this.y,
required this.size,
}) : super.detached(
binaryMessenger: binaryMessenger,
instanceManager: instanceManager,
Expand All @@ -46,11 +49,22 @@ class MeteringPoint extends JavaObject {

late final _MeteringPointHostApiImpl _api;

/// something
Future<double> getDefaultPointSize() => _api.getDefaultPointSize();
/// somethin
final double x;

/// somethin
final double y;

/// somethin
Future<double> getSize() => _api.getSizeFromInstance(this);
final double? size;

/// something
static Future<double> getDefaultPointSize(
{BinaryMessenger? binaryMessenger}) {
final MeteringPointHostApi hostApi =
MeteringPointHostApi(binaryMessenger: binaryMessenger);
return hostApi.getDefaultPointSize();
}
}

/// Host API implementation of [MeteringPoint].
Expand All @@ -77,46 +91,19 @@ class _MeteringPointHostApiImpl extends MeteringPointHostApi {
/// Maintains instances stored to communicate with native language objects.
late final InstanceManager instanceManager;

/// somethin
Future<double> getSizeFromInstance(MeteringPoint instance) {
final int identifier = instanceManager.getIdentifier(instance)!;
return getSize(identifier);
}
}

/// Flutter API implementation of [MeteringPoint].
class MeteringPointFlutterApiImpl extends MeteringPointFlutterApi {
/// Constructs a [MeteringPointFlutterApiImpl].
///
/// If [binaryMessenger] is null, the default [BinaryMessenger] will be used,
/// which routes to the host platform.
///
/// An [instanceManager] is typically passed when a copy of an instance
/// contained by an [InstanceManager] is being created. If left null, it
/// will default to the global instance defined in [JavaObject].
MeteringPointFlutterApiImpl({
BinaryMessenger? binaryMessenger,
InstanceManager? instanceManager,
}) : _binaryMessenger = binaryMessenger,
_instanceManager = instanceManager ?? JavaObject.globalInstanceManager;

/// Receives binary data across the Flutter platform barrier.
final BinaryMessenger? _binaryMessenger;

/// Maintains instances stored to communicate with native language objects.
final InstanceManager _instanceManager;
Future<void> createFromInstance(
MeteringPoint instance, double x, double y, double? size) {
int? identifier = instanceManager.getIdentifier(instance);
identifier ??= instanceManager.addDartCreatedInstance(instance,
onCopy: (MeteringPoint original) {
return MeteringPoint.detached(
binaryMessenger: binaryMessenger,
instanceManager: instanceManager,
x: original.x,
y: original.y,
size: original.size);
});

@override
void create(int identifier) {
_instanceManager.addHostCreatedInstance(
MeteringPoint.detached(
binaryMessenger: _binaryMessenger, instanceManager: _instanceManager),
identifier,
onCopy: (MeteringPoint original) {
return MeteringPoint.detached(
binaryMessenger: _binaryMessenger,
instanceManager: _instanceManager);
},
);
return create(identifier, x, y, size);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -446,13 +446,13 @@ abstract class CameraControlHostApi {
void setZoomRatio(int identifier, double ratio);

@async
int setExposureCompensationIndex(int identifier, int index);
int startFocusAndMetering(int identifier, int focusMeteringActionId);

@async
int startFocusAndMetering(int identifier, int focusMeteringActionId);
void cancelFocusAndMetering(int identifier);

@async
void cancelFocusAndMetering(int identiier);
int setExposureCompensationIndex(int identifier, int index);
}

@FlutterApi()
Expand Down Expand Up @@ -487,8 +487,6 @@ abstract class MeteringPointHostApi {
void create(int identifier, double x, double y, double? size);

double getDefaultPointSize();

double getSize(int identifier);
}

@HostApi(dartHostTestHandler: 'TestDisplayOrientedMeteringPointFactoryHostApi')
Expand Down