Camera.MAUI
1.0.0
See the version list below for details.
dotnet add package Camera.MAUI --version 1.0.0
NuGet\Install-Package Camera.MAUI -Version 1.0.0
<PackageReference Include="Camera.MAUI" Version="1.0.0" />
paket add Camera.MAUI --version 1.0.0
#r "nuget: Camera.MAUI, 1.0.0"
// Install Camera.MAUI as a Cake Addin #addin nuget:?package=Camera.MAUI&version=1.0.0 // Install Camera.MAUI as a Cake Tool #tool nuget:?package=Camera.MAUI&version=1.0.0
Camera.MAUI
A Camera View control and a Barcode Endode/Decode control (based on ZXing.Net) for .NET MAUI applications.
CameraView
A ContetView control for camera management with the next properties:
Android | iOS/Mac | Windows | |
---|---|---|---|
Preview | ✅ | ✅ | ✅ |
Mirror preview | ✅ | ✅ | ✅ |
Flash | ✅ | ✅ | ✅ |
Torch | ✅ | ✅ | ✅ |
Zoom | ✅ | ✅ | ✅ |
Take snapshot | ✅ | ✅ | ✅ |
Save snapshot | ✅ | ✅ | ✅ |
Barcode detection/decode | ✅ | ✅ | ✅ |
Install and configure CameraView
Download and Install Camera.MAUI NuGet package on your application.
Initialize the plugin in your
MauiProgram.cs
:// Add the using to the top using Camera.MAUI; public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .UseMauiCameraView(); // Add the use of the plugging return builder.Build(); }
Add camera permissions to your application:
Android
In your AndroidManifest.xml
file (Platforms\Android) add the following permission:
<uses-permission android:name="android.permission.CAMERA" />
iOS/MacCatalyst
In your info.plist
file (Platforms\iOS / Platforms\MacCatalyst) add the following permission:
<key>NSCameraUsageDescription</key>
<string>This app uses camera for...</string>
Make sure that you enter a clear and valid reason for your app to access the camera. This description will be shown to the user.
Windows
In your Package.appxmanifest file (Platforms\Windows) go to Capabilities and mark Web Camera.
For more information on permissions, see the Microsoft Docs.
Using CameraView
In XAML, make sure to add the right XML namespace:
xmlns:cv="xmlns:cv="clr-namespace:Camera.MAUI;assembly=Camera.MAUI"
Use the control:
<cv:CameraView x:Name="cameraView" WidthRequest="300" HeightRequest="200"/>
Configure the events:
cameraView.CamerasLoaded += CameraView_CamerasLoaded;
cameraView.BarcodeDetected += CameraView_BarcodeDetected;
Configure the camera to use:
private void CameraView_CamerasLoaded(object sender, EventArgs e)
{
if (cameraView.Cameras.Count > 0)
{
cameraView.Camera = cameraView.Cameras.First();
MainThread.BeginInvokeOnMainThread(async () =>
{
if (await cameraView.StartCameraAsync() == CameraResult.Success)
{
controlButton.Text = "Stop";
playing = true;
}
});
}
}
Start camera playback:
if (await cameraView.StartCameraAsync() == CameraResult.Success)
{
playing = true;
}
Stop camera playback:
if (await cameraView.StopCameraAsync() == CameraResult.Success)
{
playing = false;
}
Set Flash mode
cameraView.FlashMode = FlashMode.Auto;
Toggle Torch
cameraView.TorchEnabled = !cameraView.TorchEnabled;
Set mirrored mode
cameraView.MirroredImage = true;
Set zoom factor
if (cameraView.MaxZoomFactor >= 2.5f)
cameraView.ZoomFactor = 2.5f;
Get a snapshot from the playback
ImageSource imageSource = cameraView.GetSnapShot(ImageFormat.PNG);
Enable and Handle barcodes detection:
cameraView.BarcodeDetected += CameraView_BarcodeDetected;
cameraView.BarCodeOptions = new ZXingHelper.BarcodeDecodeOptions
{
AutoRotate = true,
PossibleFormats = { ZXing.BarcodeFormat.QR_CODE },
ReadMultipleCodes = false,
TryHarder = true,
TryInverted = true
};
cameraView.BarCodeDetectionFrameRate = 10;
cameraView.BarCodeDetectionEnabled = true;
private void CameraView_BarcodeDetected(object sender, ZXingHelper.BarcodeEventArgs args)
{
Debug.WriteLine("BarcodeText=" + args.Result[0].Text);
}
BarcodeImage
A ContentView control for generate codebars images.
In XAML, make sure to add the right XML namespace:
xmlns:cv="xmlns:cv="clr-namespace:Camera.MAUI;assembly=Camera.MAUI"
Use the control and its bindable properties:
<cv:BarcodeImage x:Name="barcodeImage" Aspect="AspectFit"
WidthRequest="400" HeightRequest="400"
BarcodeWidth="200" BarcodeHeight="200" BarcodeMargin="5"
BarcodeBackground="White" BarcodeForeground="Blue"
BarcodeFormat="QR_CODE" />
Set the barcode property to generate the image:
barcodeImage.Barcode = "https://github.com/hjam40/Camera.MAUI";
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-android33.0 is compatible. net7.0-ios was computed. net7.0-ios16.1 is compatible. net7.0-maccatalyst was computed. net7.0-maccatalyst16.1 is compatible. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net7.0-windows10.0.19041 is compatible. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- ZXing.Net (>= 0.16.9)
-
net7.0-android33.0
- Xamarin.AndroidX.Camera.Camera2 (>= 1.2.0)
- Xamarin.AndroidX.Camera.Lifecycle (>= 1.2.0)
- Xamarin.AndroidX.Camera.View (>= 1.2.0)
- ZXing.Net (>= 0.16.9)
-
net7.0-ios16.1
- ZXing.Net (>= 0.16.9)
-
net7.0-maccatalyst16.1
- ZXing.Net (>= 0.16.9)
-
net7.0-windows10.0.19041
- ZXing.Net (>= 0.16.9)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Camera.MAUI:
Package | Downloads |
---|---|
Camera.MAUI.ZXing
A Barcode Endode/Decode control (based on ZXing.Net) for use with Camera.MAUI in .NET MAUI applications. |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on Camera.MAUI:
Repository | Stars |
---|---|
exendahal/ecommerce_maui
E-commerce design using .NET MAUI (.NET 8)
|
|
bitwarden/mobile
Retired Bitwarden mobile app for iOS and Android (MAUI/Xamarin).
|
Version | Downloads | Last updated |
---|---|---|
1.5.1 | 85,608 | 2/29/2024 |
1.5.0 | 7,798 | 2/29/2024 |
1.4.4 | 126,990 | 6/9/2023 |
1.4.3 | 2,526 | 5/24/2023 |
1.4.2 | 765 | 5/19/2023 |
1.4.1 | 1,367 | 5/17/2023 |
1.4.0 | 1,137 | 5/12/2023 |
1.3.5 | 3,318 | 4/15/2023 |
1.3.4 | 816 | 4/13/2023 |
1.3.3 | 237 | 4/13/2023 |
1.3.2 | 198 | 4/13/2023 |
1.3.1 | 364 | 4/11/2023 |
1.3.0 | 920 | 4/9/2023 |
1.2.1 | 5,767 | 3/30/2023 |
1.2.0 | 291 | 3/30/2023 |
1.1.0 | 536 | 3/10/2023 |
1.0.0 | 472 | 3/9/2023 |