.NET MAUI Scanner de Código QR
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.
Como Construir um Scanner de Código QR no .NET MAUI
- Instale a biblioteca C# IronQR para escanear códigos QR no mobile
- Desenhe o layout da aplicação em
MainPage.xaml - Use
FilePickerpara permitir que o usuário selecione uma imagem de código QR do dispositivo - Carregue a imagem e envolva-a em um
QrImageInput - Chame
Reade exiba o valor decodificado em umLabel
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
- Visual Studio 2022 com a carga de trabalho .NET MAUI instalada
- 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>
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.
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
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.
Código QR selecionado e valor decodificado exibido no rótulo de resultado
Baixar o Projeto
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.

