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.

  • 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:

[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

#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 for more details.