From 58ce740f8d65e2fe9467729faf948e97ceeca33c Mon Sep 17 00:00:00 2001 From: Dominik Titl <78549750+morning4coffe-dev@users.noreply.github.com> Date: Tue, 10 Dec 2024 20:45:35 +0100 Subject: [PATCH 1/2] docs: Add `CameraCaptureUI` page --- .../features/windows-media-capture.md | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 doc/articles/features/windows-media-capture.md diff --git a/doc/articles/features/windows-media-capture.md b/doc/articles/features/windows-media-capture.md new file mode 100644 index 000000000000..36bc1ce76c99 --- /dev/null +++ b/doc/articles/features/windows-media-capture.md @@ -0,0 +1,62 @@ +--- +uid: Uno.Features.Capture +--- + +# Device Information + +> [!TIP] +> This article covers Uno-specific information for the `Windows.Media.Capture` namespace. For a full description of the feature and instructions on using it, see [Windows.Media.Capture Namespace](https://learn.microsoft.com/uwp/api/windows.media.capture). + +- The `Windows.Media.Capture` namespace provides classes for the capture of photos, audio recordings, and videos. + +## `CameraCaptureUI` + +`CameraCaptureUI` is currently only supported on Android, iOS, and UWP. On other platforms, `CaptureFile` will return `null`. + +### Platform-specific + +#### Android + +If you are planning to use the `CameraCaptureUI`, your app must declare `android.permission.CAMERA` and `android.permission.WRITE_EXTERNAL_STORAGE` permissions, otherwise the functionality will not work as expected: + +```csharp +[assembly: UsesPermission("android.permission.CAMERA")] +[assembly: UsesPermission("android.permission.WRITE_EXTERNAL_STORAGE")] +``` + +#### iOS + +On iOS, `CameraCaptureUI` uses the native UIImagePickerController for capturing media. Ensure that the `NSCameraUsageDescription` and `NSMicrophoneUsageDescription` keys are added to the `Info.plist` file to request the necessary permissions. + +#### WinUI/UWP + +On UWP, `CameraCaptureUI` provides a unified interface for capturing photos and videos, fully leveraging the platform's APIs. WinUI support is coming with v1.7+. + +### Example + +```csharp +#if __ANDROID__ || __IOS__ || __WINDOWS__ +using Windows.Media.Capture; +#endif + +public async Task CapturePhotoAsync() +{ +#if __ANDROID__ || __IOS__ || __WINDOWS__ + var captureUI = new CameraCaptureUI(); + captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg; + + var file = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo); + + if (file != null) + { + // Handle the captured file (e.g., save or display it) + } + else + { + // Handle the cancellation or error + } +#endif +} +``` + +You can also check out our [sample](https://github.com/unoplatform/Uno.Samples/tree/master/UI/CameraCaptureUI) for more details. From d0db2a25b982e55043773c97c8cdf4131d233eff Mon Sep 17 00:00:00 2001 From: Dominik Titl <78549750+morning4coffe-dev@users.noreply.github.com> Date: Wed, 11 Dec 2024 12:04:12 +0100 Subject: [PATCH 2/2] chore: Add page to toc --- doc/articles/features/windows-media-capture.md | 2 +- doc/articles/toc.yml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/articles/features/windows-media-capture.md b/doc/articles/features/windows-media-capture.md index 36bc1ce76c99..01c90f1eece5 100644 --- a/doc/articles/features/windows-media-capture.md +++ b/doc/articles/features/windows-media-capture.md @@ -2,7 +2,7 @@ uid: Uno.Features.Capture --- -# Device Information +# Capture > [!TIP] > This article covers Uno-specific information for the `Windows.Media.Capture` namespace. For a full description of the feature and instructions on using it, see [Windows.Media.Capture Namespace](https://learn.microsoft.com/uwp/api/windows.media.capture). diff --git a/doc/articles/toc.yml b/doc/articles/toc.yml index 481d4237870c..255799d53813 100644 --- a/doc/articles/toc.yml +++ b/doc/articles/toc.yml @@ -606,6 +606,8 @@ href: features/windows-system-power.md - name: Bluetooth href: features/bluetoothdevice.md + - name: Capture (Camera) + href: features/windows-media-capture.md - name: Clipboard href: features/clipboard.md - name: Compass