.NET MAUI Scanner de Código QR

This article was translated from English: Does it need improvement?
Translated
View the article in English

Introdução

.NET MAUI (Interface de Aplicações Multiplataforma .NET) é um framework multiplataforma para desenvolver aplicativos nativos móveis e de desktop a partir de uma única base de código C#. Um único projeto pode ter como alvo Android, iOS, macOS e Windows, compartilhando layouts de UI e lógica de negócios em todas as plataformas. A integração do MAUI com o ecossistema .NET significa que os desenvolvedores podem alcançar usuários móveis sem abandonar as ferramentas ou linguagens familiares.

Neste artigo, explicaremos como construir um scanner de código QR nativo em uma aplicação .NET MAUI usando o IronQR para decodificar códigos QR selecionados na biblioteca de fotos do dispositivo.

IronQR: Biblioteca de Código QR em C

Para ler códigos QR na aplicação, usaremos a biblioteca .NET IronQR. Ela fornece uma API direta para detectar e decodificar códigos QR de qualquer fonte de imagem, incluindo arquivos selecionados em um dispositivo móvel. O IronQR é executado em todas as plataformas alvo do MAUI e não requer conhecimento de domínio de código de barras para integração.

O IronQR pode decodificar códigos QR padrão, Micro QR e rMQR, aceitando entrada de imagem como arquivos, streams ou bitmaps. Pode ser instalado em segundos via o Gerenciador de Pacotes NuGet.

Passos para Construir um Scanner de Código QR no .NET MAUI

Siga estes passos para adicionar o escaneamento de código QR a uma aplicação .NET MAUI.

Pré-requisitos

  1. Visual Studio 2022 com a carga de trabalho .NET MAUI instalada
  2. Um projeto .NET MAUI visando Android ou iOS

Instalar o IronQR

Instale a biblioteca IronQR usando o Console do Gerenciador de Pacotes NuGet no Visual Studio. Navegue até Tools > NuGet Package Manager > Package Manager Console e execute:

Install-Package IronQR

Como alternativa, procure por IronQR no NuGet e instale a versão mais recente.

Design Frontal

A interface do scanner consiste em um botão para acionar a seleção de imagem, uma visualização de imagem para pré-visualizar o código QR selecionado e um rótulo para exibir o resultado decodificado.

Substitua o conteúdo de MainPage.xaml pelo seguinte:

<?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"
             x:Class="MauiQrScanner.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Button
                x:Name="scanButton"
                Text="Select QR Code Image"
                SemanticProperties.Hint="Select Image"
                Clicked="OnScanButtonClicked"
                HorizontalOptions="Center" />

            <Image
                x:Name="qrImage"
                SemanticProperties.Description="Selected QR Code"
                HeightRequest="200"
                HorizontalOptions="Center" />

            <Label
                x:Name="resultLabel"
                Text="Scanned Text: "
                HorizontalOptions="Center"
                VerticalOptions="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
<?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"
             x:Class="MauiQrScanner.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Button
                x:Name="scanButton"
                Text="Select QR Code Image"
                SemanticProperties.Hint="Select Image"
                Clicked="OnScanButtonClicked"
                HorizontalOptions="Center" />

            <Image
                x:Name="qrImage"
                SemanticProperties.Description="Selected QR Code"
                HeightRequest="200"
                HorizontalOptions="Center" />

            <Label
                x:Name="resultLabel"
                Text="Scanned Text: "
                HorizontalOptions="Center"
                VerticalOptions="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
XML

Exemplo de Entrada

Use o código QR abaixo como imagem de teste. Salve-o no seu dispositivo, então selecione-o através do seletor de arquivos do aplicativo. O valor decodificado deve ser exibido como https://ironsoftware.com.

Sample QR code encoding https://ironsoftware.com for testing the .NET MAUI QR scanner

Código QR de exemplo — codifica https://ironsoftware.com

Escaneando Códigos QR com IronQR

Ao tocar no botão de digitalização, FilePicker abre a biblioteca de imagens do dispositivo. Após o usuário selecionar uma foto, o caminho completo é carregado em um AnyBitmap, que é passado para QrReader.Read(). O valor decodificado do primeiro código QR detectado é exibido no rótulo de resultado.

Adicione o seguinte método a MainPage.xaml.cs:

using IronQr;
using IronSoftware.Drawing;

private async void OnScanButtonClicked(object sender, EventArgs e)
{
    // Start scanning QR codes
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });
    var imageSource = images.FullPath.ToString();

    var inputBmp = AnyBitmap.FromFile(imageSource);

    // Load the asset into QrImageInput
    QrImageInput imageInput = new QrImageInput(inputBmp);

    // Create a QR Reader object
    QrReader reader = new QrReader();

    // Read the input and get all embedded QR Codes
    IEnumerable<QrResult> results = reader.Read(imageInput);

    // Display the first result
    resultLabel.Text = "Scanned Text: " + results.First().Value;
}
using IronQr;
using IronSoftware.Drawing;

private async void OnScanButtonClicked(object sender, EventArgs e)
{
    // Start scanning QR codes
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });
    var imageSource = images.FullPath.ToString();

    var inputBmp = AnyBitmap.FromFile(imageSource);

    // Load the asset into QrImageInput
    QrImageInput imageInput = new QrImageInput(inputBmp);

    // Create a QR Reader object
    QrReader reader = new QrReader();

    // Read the input and get all embedded QR Codes
    IEnumerable<QrResult> results = reader.Read(imageInput);

    // Display the first result
    resultLabel.Text = "Scanned Text: " + results.First().Value;
}
Imports IronQr
Imports IronSoftware.Drawing

Private Async Sub OnScanButtonClicked(sender As Object, e As EventArgs)
    ' Start scanning QR codes
    Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
        .PickerTitle = "Pick image",
        .FileTypes = FilePickerFileType.Images
    })
    Dim imageSource = images.FullPath.ToString()

    Dim inputBmp = AnyBitmap.FromFile(imageSource)

    ' Load the asset into QrImageInput
    Dim imageInput As New QrImageInput(inputBmp)

    ' Create a QR Reader object
    Dim reader As New QrReader()

    ' Read the input and get all embedded QR Codes
    Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)

    ' Display the first result
    resultLabel.Text = "Scanned Text: " & results.First().Value
End Sub
$vbLabelText   $csharpLabel

FilePicker.Default.PickAsync é fornecido pela camada de abstração da plataforma MAUI e funciona no Android, iOS e Windows sem qualquer código específico da plataforma. AnyBitmap.FromFile lida com a decodificação da imagem e QrReader.Read retorna um IEnumerable<QrResult> com uma entrada para cada código QR encontrado na imagem.

Saída

Selecionar uma imagem de código QR dispara o escaneamento. O valor decodificado aparece no rótulo de resultado abaixo da pré-visualização da imagem.

.NET MAUI QR Code Scanner using IronQR — app selecting a QR code image and displaying the decoded value

Código QR selecionado e valor decodificado exibido no rótulo de resultado

Baixar o Projeto

Clique aqui para baixar o projeto completo MauiQrScanner.

Conclusão

Neste artigo, demonstramos como construir um scanner de código QR nativo em uma aplicação .NET MAUI usando o IronQR. A API FilePicker oferece seleção de imagem nativa da plataforma no Android, iOS e Windows, enquanto a QrReader.Read da IronQR lida com a decodificação em uma única chamada. A mesma abordagem é escalável para vários códigos QR por imagem, iterando sobre toda a coleção de resultados em vez de chamar .First().

O IronQR requer uma licença para desenvolvimento e uso comercial. Detalhes de licenciamento estão disponíveis aqui.

Para uma visão mais profunda sobre a leitura de propriedades de código QR além do valor, veja os guias Ler Valor de Código QR e Ler Tipo de Código QR.

Perguntas frequentes

Sobre o que é o Tutorial de Leitor de Código QR for .NET MAUI?

O Tutorial de Leitor de Código QR for .NET MAUI fornece orientação sobre como construir um leitor de código QR usando IronQR, com instruções destinadas a aplicativos .NET MAUI nas plataformas Android, iOS e Windows.

Quais plataformas são suportadas pelo Leitor de Código QR for .NET MAUI?

O Leitor de Código QR for .NET MAUI suporta as plataformas Android, iOS e Windows, permitindo que os desenvolvedores criem aplicativos multiplataforma usando IronQR.

Como posso selecionar imagens para leitura de código QR em um aplicativo .NET MAUI?

Você pode usar o componente FilePicker em um aplicativo .NET MAUI para selecionar imagens, que podem ser processadas pelo método QrReader.Read() do IronQR para decodificar códigos QR.

Qual função é usada para decodificar códigos QR no tutorial?

No tutorial, a função QrReader.Read() do IronQR é usada para decodificar códigos QR de imagens selecionadas em um aplicativo .NET MAUI.

Posso usar o IronQR para leitura de código QR em um aplicativo multiplataforma?

Sim, o IronQR é projetado para ser usado em aplicativos multiplataforma, e com o framework .NET MAUI, você pode criar leitores de códigos QR para Android, iOS e Windows.

Existe uma função específica de leitura de código QR for .NET MAUI?

Sim, o tutorial demonstra como usar a função QrReader.Read() do IronQR dentro de um aplicativo .NET MAUI para ler e decodificar códigos QR.

O IronQR suporta leitura de código QR em dispositivos móveis?

O IronQR suporta leitura de códigos QR em dispositivos móveis, incluindo Android e iOS, conforme demonstrado no Tutorial de Leitor de Código QR for .NET MAUI.

Qual é o papel do FilePicker no processo de leitura de código QR?

O FilePicker é usado para selecionar imagens do armazenamento do dispositivo, que são então passadas para o QrReader.Read() do IronQR para decodificação de código QR em um aplicativo .NET MAUI.

É possível integrar um leitor de código QR em um aplicativo Windows usando .NET MAUI?

Sim, o Tutorial de Leitor de Código QR for .NET MAUI mostra como integrar um leitor de código QR em um aplicativo Windows usando IronQR.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Baixar 67,270 | Versão: 2026.5 just released
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronQR
executar um exemplo Veja seu URL se transformar em um código QR.