Getting Started (MAUI)
Applies to CapCognition SDK 2.2.x with .NET MAUI 9 or 10, on Android and iOS only. For Windows, Linux, or Raspberry Pi, use the .NET LTS SDK. See platform requirements and licensing.
This page shows a minimal end-to-end barcode recognition setup for the CapCognition .NET MAUI SDK:
- initialize the library in
MauiProgram - add a
RecognitionViewto a page - configure barcode recognition for QR only
- open the camera and start continuous recognition
1. Create a MAUI app
dotnet new maui -n CapCognitionMauiSample
cd CapCognitionMauiSample
2. Install NuGet packages
dotnet add package CapCognition.Maui
dotnet add package CapCognition.Maui.BarcodeScanning
3. Initialize CapCognition in MauiProgram
In MauiProgram.cs, register the CapCognition handlers and select the modules you want to use.
For this camera-based QR sample, register Capture.Use, Recognition.Use, and BarcodeDetection.Use. Leave license arguments empty for trial mode or pass the corresponding production licenses.
using CapCognition.Maui.BarcodeScanning;
using CapCognition.Maui.Helpers;
using CapCognition.Maui.Common;
using SkiaSharp.Views.Maui.Controls.Hosting;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseSkiaSharp()
.InitializeCapCognition(
[
Capture.Use(/*Add your license here*/),
Recognition.Use(/*Add your license here*/),
BarcodeDetection.Use(/*Add your license here*/),
],
enableProcessingLogs: true);
return builder.Build();
}
}
4. Add RecognitionView to your XAML page
Declare camera access in the Android manifest and provide NSCameraUsageDescription in the iOS Info.plist. The runtime permission request below complements these platform declarations.
Example MainPage.xaml:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:views="clr-namespace:CapCognition.Maui.Views;assembly=CapCognition.Maui"
x:Class="CapCognitionMauiSample.MainPage">
<Grid>
<views:RecognitionView
x:Name="RecognitionView"
RequestedPreviewResolutionWidth="1920"
RequestedCaptureResolutionWidth="1024"
UseFrontCamera="False"
FillPreviewToView="True" />
</Grid>
</ContentPage>
5. Configure QR-only options and start recognition
Example MainPage.xaml.cs:
using CapCognition.Maui.BarcodeScanning;
using CapCognition.Maui.Core.Shared.Common;
using SkiaSharp;
namespace CapCognitionMauiSample;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
var options = new RecognitionOptionBuilder()
.AddBarcodeRecognitionOption()
.TryInverted()
.SetBinarizer(BarcodeRecognitionOptions.BinarizerType.HybridBinarizer)
.SetBarcodeFormats(new[] { BarcodeRecognitionOptions.BarcodeFormat.QRCode })
.Done()
.AddBarcodeRecognitionOverlayDrawingOption()
.EnableBarcodeOverlays()
.SetSurroundingRectColor(Color.FromRgb(255, 0, 0))
.SetSurroundingStrokeWidth(2)
.SetOneDimensionalRectWidth(5)
.Done()
.Done()
.Build();
foreach (var option in options)
{
RecognitionView.AddOption(option);
}
Loaded += OnLoaded;
Unloaded += (_, _) => options.Dispose();
}
private async void OnLoaded(object? sender, EventArgs e)
{
Loaded -= OnLoaded;
var ok = await RecognitionView.RequestAllPermissionAsync();
if (!ok)
{
return;
}
RecognitionView.CameraOpenedEvt += OnCameraOpened;
RecognitionView.OpenCamera();
}
private void OnCameraOpened(bool success)
{
RecognitionView.CameraOpenedEvt -= OnCameraOpened;
if (!success)
{
return;
}
RecognitionView.RecognitionResultEvt -= OnRecognitionResult;
RecognitionView.RecognitionResultEvt += OnRecognitionResult;
RecognitionView.StartContinuousRecognition(true);
}
private void OnRecognitionResult(RecognitionResult result, SKBitmap bitmap)
{
// Handle recognition results here
Console.WriteLine(result.ToString());
}
protected override void OnDisappearing()
{
RecognitionView.Terminate();
base.OnDisappearing();
}
}
Next reading
- Shared concepts: Introduction
- System-level overview: Architectural introduction
- API surface: Public API reference (generated)