Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
feat: add cameras metadata
  • Loading branch information
bselwe committed Jul 21, 2021
commit 6f62a8eea279924e68f9e982e7538c5331e19462
13 changes: 12 additions & 1 deletion packages/camera/camera_web/lib/src/camera_web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ class CameraPlugin extends CameraPlatform {

final CameraSettings _cameraSettings;

/// Metadata associated with each camera description.
/// Populated in [availableCameras].
final _camerasMetadata = <CameraDescription, CameraMetadata>{};

/// The current browser window used to access media devices.
@visibleForTesting
html.Window? window = html.window;
Expand All @@ -57,7 +61,7 @@ class CameraPlugin extends CameraPlatform {
.whereType<html.MediaDeviceInfo>()
.where((device) => device.kind == MediaDeviceKind.videoInput)

/// The device id property is currently not supported on Internet Explorer.
/// The device id property is currently not supported on Internet Explorer:
/// https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo/deviceId#browser_compatibility
.where((device) => device.deviceId != null);

Expand Down Expand Up @@ -97,7 +101,14 @@ class CameraPlugin extends CameraPlatform {
sensorOrientation: 0,
);

final cameraMetadata = CameraMetadata(
deviceId: videoInputDevice.deviceId!,
facingMode: facingMode,
);

cameras.add(camera);

_camerasMetadata[camera] = cameraMetadata;
} else {
// Ignore as no video tracks exist in the current video input device.
continue;
Expand Down
19 changes: 19 additions & 0 deletions packages/camera/camera_web/lib/src/types/camera_metadata.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/// Metadata used along the camera description
/// to store additional web-specific camera details.
class CameraMetadata {
/// Creates a new instance of [CameraMetadata]
/// with the given [deviceId] and [facingMode].
const CameraMetadata({required this.deviceId, required this.facingMode});

/// Uniquely identifies the camera device.
///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo/deviceId
final String deviceId;

/// Describes the direction the camera is facing towards.
/// May be `user`, `environment`, `left`, `right`
/// or null if the facing mode is not available.
///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings/facingMode
final String? facingMode;
}
1 change: 1 addition & 0 deletions packages/camera/camera_web/lib/src/types/types.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
// found in the LICENSE file.

export 'camera_error_codes.dart';
export 'camera_metadata.dart';
export 'camera_options.dart';
export 'media_device_kind.dart';