Como Ler e Escrever Código de Barras no Android usando .NET MAUI

This article was translated from English: Does it need improvement?
Translated
View the article in English
Android related to Como Ler e Escrever Código de Barras no Android usando .NET MAUI

.NET MAUI (Interface de Aplicação Multi-plataforma) é o sucessor do Xamarin.Forms, permitindo que desenvolvedores construam aplicações multiplataforma para Android, iOS, macOS e Windows usando .NET. Ele simplifica o processo de desenvolvimento permitindo a criação de interfaces de usuário nativas que funcionam perfeitamente em várias plataformas.

O pacote BarCode.Android traz suporte a código de barras para Android!

Pacote IronBarcode Android

O pacote BarCode.Android habilita recursos de código de barras em dispositivos Android via projetos multiplataforma .NET. O pacote padrão BarCode não é necessário.

Install-Package BarCode.Android
Biblioteca NuGet C# para PDF
### Instalar com NuGet
Install-Package BarCode.Android

Criar um projeto .NET MAUI

Abra o Visual Studio e clique em "Criar um novo projeto". Procure por MAUI, selecione .NET MAUI App e clique em "Próximo".

Incluir a Biblioteca BarCode.Android

A biblioteca pode ser adicionada de várias maneiras. A maneira mais fácil é talvez usando o NuGet.

  1. Dentro do Visual Studio, clique com o botão direito em "Dependências" e selecione "Gerenciar Pacotes NuGet ...".
  2. Selecione a aba "Procurar" e pesquise por "BarCode.Android".
  3. Selecione o pacote "BarCode.Android" e clique em "Instalar".

Para evitar problemas com outras plataformas, modifique o arquivo csproj para incluir o pacote apenas ao mirar a plataforma Android. Para fazer isso:

  1. Clique com o botão direito no arquivo *.csproj do seu projeto e selecione "Editar Arquivo do Projeto".
  2. Crie um novo elemento ItemGroup assim:
<ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    <PackageReference Include="BarCode.Android" Version="2025.3.4" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    <PackageReference Include="BarCode.Android" Version="2025.3.4" />
</ItemGroup>
XML
  1. Mova o PackageReference "BarCode.Android" dentro do ItemGroup que acabamos de criar.

Os passos acima impedirão que o pacote "BarCode.Android" seja usado em plataformas como iOS. Para esse propósito, instale BarCode.iOS em vez disso.

Configurar o Pacote Android

Para que o Android funcione, você precisa configurar as configurações do pacote Android. No seu arquivo ".csproj", adicione a seguinte entrada para especificar o arquivo de configuração do pacote Android:

<AndroidBundleConfigurationFile>BundleConfig.json</AndroidBundleConfigurationFile>
<AndroidBundleConfigurationFile>BundleConfig.json</AndroidBundleConfigurationFile>
XML

Crie um arquivo chamado "BundleConfig.json" no diretório raiz do projeto. Este arquivo JSON contém as configurações necessárias para o pacote Android, que são cruciais para a funcionalidade da biblioteca.

{
    "optimizations": {
        "uncompress_native_libraries": {}
    }
}

Esta configuração garante que as bibliotecas nativas sejam descompactadas, o que é um passo necessário para a biblioteca funcionar corretamente no ambiente Android.

Desenhar a Interface do App

Atualize o arquivo XAML para permitir que os usuários insiram valores para gerar códigos de barras e códigos QR. Além disso, adicione um botão para escolher um documento para leitura de código de barras. Eis um exemplo:

<?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="IronBarcodeMauiAndroid.MainPage">

    <VerticalStackLayout Padding="20">
        <HorizontalStackLayout>
            <CheckBox x:Name="generatePdfCheckBox" IsChecked="{Binding IsGeneratePdfChecked}" />
            <Label Text="PDF (unchecked for PNG)" VerticalOptions="Center"/>
        </HorizontalStackLayout>

        <Entry x:Name="barcodeInput" Placeholder="Enter barcode value..." />
        <Button Text="Generate and save barcode" Clicked="WriteBarcode" />

        <Entry x:Name="qrInput" Placeholder="Enter QR code value..." />
        <Button Text="Generate and save QR code" Clicked="WriteQRcode" />

        <Button
            Text="Read Barcode"
            Clicked="ReadBarcode"
            Grid.Row="0"
            HorizontalOptions="Center"
            Margin="20, 20, 20, 10"/>
        <ScrollView
            Grid.Row="1"
            BackgroundColor="LightGray"
            Padding="10"
            Margin="10, 10, 10, 30">
            <Label x:Name="OutputText"/>
        </ScrollView>
    </VerticalStackLayout>

</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="IronBarcodeMauiAndroid.MainPage">

    <VerticalStackLayout Padding="20">
        <HorizontalStackLayout>
            <CheckBox x:Name="generatePdfCheckBox" IsChecked="{Binding IsGeneratePdfChecked}" />
            <Label Text="PDF (unchecked for PNG)" VerticalOptions="Center"/>
        </HorizontalStackLayout>

        <Entry x:Name="barcodeInput" Placeholder="Enter barcode value..." />
        <Button Text="Generate and save barcode" Clicked="WriteBarcode" />

        <Entry x:Name="qrInput" Placeholder="Enter QR code value..." />
        <Button Text="Generate and save QR code" Clicked="WriteQRcode" />

        <Button
            Text="Read Barcode"
            Clicked="ReadBarcode"
            Grid.Row="0"
            HorizontalOptions="Center"
            Margin="20, 20, 20, 10"/>
        <ScrollView
            Grid.Row="1"
            BackgroundColor="LightGray"
            Padding="10"
            Margin="10, 10, 10, 30">
            <Label x:Name="OutputText"/>
        </ScrollView>
    </VerticalStackLayout>

</ContentPage>
XML

Ler e Escrever Códigos de Barras

Do código MainPage.xaml acima, podemos ver que a caixa de seleção determina se o código de barras e o código QR gerados devem estar no formato PDF. Em seguida, definimos a chave de licença. Por favor, use uma chave de licença de teste ou paga para esta etapa.

O código verifica e recupera o valor da variável barcodeInput, e então usa o método CreateBarcode para gerar o código de barras. Finalmente, ele chama o método SaveToDownloadsAsync, que salva o arquivo de forma apropriada tanto para Android quanto para iOS.

No iOS, um caminho de arquivo personalizado é necessário para exportar o documento para o aplicativo Files.

using IronBarCode;
using System;
using System.IO;
using System.Threading.Tasks;
using Xamarin.Essentials;

namespace IronBarcodeMauiAndroid
{
    public partial class MainPage : ContentPage
    {
        public bool IsGeneratePdfChecked
        {
            get => generatePdfCheckBox.IsChecked;
            set
            {
                generatePdfCheckBox.IsChecked = value;
            }
        }

        public MainPage()
        {
            InitializeComponent();
            // Set the license key for IronBarcode, replace with your actual license key.
            License.LicenseKey = "IRONBARCODE-MYLICENSE-KEY-1EF01";
        }

        private async void WriteBarcode(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(barcodeInput.Text))
                {
                    // Create a barcode from the text input with the EAN13 encoding.
                    var barcode = BarcodeWriter.CreateBarcode(barcodeInput.Text, BarcodeEncoding.EAN13);

                    // Determine the file extension and data format based on the checkbox state.
                    string fileExtension = IsGeneratePdfChecked ? "pdf" : "png";
                    string fileName = $"Barcode_{DateTime.Now:yyyyMMddHHmmss}.{fileExtension}";
                    byte[] fileData = IsGeneratePdfChecked ? barcode.ToPdfBinaryData() : barcode.ToPngBinaryData();

                    // Save the generated barcode to the Downloads folder.
                    await SaveToDownloadsAsync(fileData, fileName);

                    await Application.Current.MainPage.DisplayAlert("Saved", "File saved to Downloads folder", "OK");
                }
            }
            catch (Exception ex)
            {
                // Handle exceptions and log the error.
                System.Diagnostics.Debug.WriteLine(ex);
            }
        }

        private async void WriteQRcode(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(qrInput.Text))
                {
                    // Create a QR code from the text input.
                    var barcode = QRCodeWriter.CreateQrCode(qrInput.Text);

                    // Determine the file extension and data format based on the checkbox state.
                    string fileExtension = IsGeneratePdfChecked ? "pdf" : "png";
                    string fileName = $"QRcode_{DateTime.Now:yyyyMMddHHmmss}.{fileExtension}";
                    byte[] fileData = IsGeneratePdfChecked ? barcode.ToPdfBinaryData() : barcode.ToPngBinaryData();

                    // Save the generated QR code to the Downloads folder.
                    await SaveToDownloadsAsync(fileData, fileName);

                    await Application.Current.MainPage.DisplayAlert("Saved", "File saved to Downloads folder", "OK");
                }
            }
            catch (Exception ex)
            {
                // Handle exceptions and log the error.
                System.Diagnostics.Debug.WriteLine(ex);
            }
        }

        private async void ReadBarcode(object sender, EventArgs e)
        {
            try
            {
                var options = new PickOptions
                {
                    PickerTitle = "Please select a file"
                };
                var file = await FilePicker.PickAsync(options);

                OutputText.Text = "";

                if (file != null)
                {
                    using var stream = await file.OpenReadAsync();

                    BarcodeResults result;

                    if (file.ContentType.Contains("image"))
                    {
                        // Read barcodes from an image file.
                        result = BarcodeReader.Read(stream);
                    }
                    else
                    {
                        // Read barcodes from a PDF file.
                        result = BarcodeReader.ReadPdf(stream);
                    }

                    string barcodeResult = "";
                    int count = 1;

                    // Retrieve and format the barcode reading results.
                    result.ForEach(x => { barcodeResult += $"Barcode {count}: {x.Value}\n"; count++; });

                    OutputText.Text = barcodeResult;
                }
            }
            catch (Exception ex)
            {
                // Handle exceptions and log the error.
                System.Diagnostics.Debug.WriteLine(ex);
            }
        }

        public async Task SaveToDownloadsAsync(byte[] fileData, string fileName)
        {
            var downloadsPath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);
            var filePath = Path.Combine(downloadsPath.AbsolutePath, fileName);

            try
            {
                // Create the directory if it doesn't exist.
                if (!Directory.Exists(downloadsPath.AbsolutePath))
                {
                    Directory.CreateDirectory(downloadsPath.AbsolutePath);
                }

                // Save the file to the Downloads folder.
                await File.WriteAllBytesAsync(filePath, fileData);
            }
            catch (Exception ex)
            {
                // Log errors if file saving fails.
                System.Diagnostics.Debug.WriteLine("Error saving file: " + ex.Message);
            }
        }
    }
}
using IronBarCode;
using System;
using System.IO;
using System.Threading.Tasks;
using Xamarin.Essentials;

namespace IronBarcodeMauiAndroid
{
    public partial class MainPage : ContentPage
    {
        public bool IsGeneratePdfChecked
        {
            get => generatePdfCheckBox.IsChecked;
            set
            {
                generatePdfCheckBox.IsChecked = value;
            }
        }

        public MainPage()
        {
            InitializeComponent();
            // Set the license key for IronBarcode, replace with your actual license key.
            License.LicenseKey = "IRONBARCODE-MYLICENSE-KEY-1EF01";
        }

        private async void WriteBarcode(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(barcodeInput.Text))
                {
                    // Create a barcode from the text input with the EAN13 encoding.
                    var barcode = BarcodeWriter.CreateBarcode(barcodeInput.Text, BarcodeEncoding.EAN13);

                    // Determine the file extension and data format based on the checkbox state.
                    string fileExtension = IsGeneratePdfChecked ? "pdf" : "png";
                    string fileName = $"Barcode_{DateTime.Now:yyyyMMddHHmmss}.{fileExtension}";
                    byte[] fileData = IsGeneratePdfChecked ? barcode.ToPdfBinaryData() : barcode.ToPngBinaryData();

                    // Save the generated barcode to the Downloads folder.
                    await SaveToDownloadsAsync(fileData, fileName);

                    await Application.Current.MainPage.DisplayAlert("Saved", "File saved to Downloads folder", "OK");
                }
            }
            catch (Exception ex)
            {
                // Handle exceptions and log the error.
                System.Diagnostics.Debug.WriteLine(ex);
            }
        }

        private async void WriteQRcode(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(qrInput.Text))
                {
                    // Create a QR code from the text input.
                    var barcode = QRCodeWriter.CreateQrCode(qrInput.Text);

                    // Determine the file extension and data format based on the checkbox state.
                    string fileExtension = IsGeneratePdfChecked ? "pdf" : "png";
                    string fileName = $"QRcode_{DateTime.Now:yyyyMMddHHmmss}.{fileExtension}";
                    byte[] fileData = IsGeneratePdfChecked ? barcode.ToPdfBinaryData() : barcode.ToPngBinaryData();

                    // Save the generated QR code to the Downloads folder.
                    await SaveToDownloadsAsync(fileData, fileName);

                    await Application.Current.MainPage.DisplayAlert("Saved", "File saved to Downloads folder", "OK");
                }
            }
            catch (Exception ex)
            {
                // Handle exceptions and log the error.
                System.Diagnostics.Debug.WriteLine(ex);
            }
        }

        private async void ReadBarcode(object sender, EventArgs e)
        {
            try
            {
                var options = new PickOptions
                {
                    PickerTitle = "Please select a file"
                };
                var file = await FilePicker.PickAsync(options);

                OutputText.Text = "";

                if (file != null)
                {
                    using var stream = await file.OpenReadAsync();

                    BarcodeResults result;

                    if (file.ContentType.Contains("image"))
                    {
                        // Read barcodes from an image file.
                        result = BarcodeReader.Read(stream);
                    }
                    else
                    {
                        // Read barcodes from a PDF file.
                        result = BarcodeReader.ReadPdf(stream);
                    }

                    string barcodeResult = "";
                    int count = 1;

                    // Retrieve and format the barcode reading results.
                    result.ForEach(x => { barcodeResult += $"Barcode {count}: {x.Value}\n"; count++; });

                    OutputText.Text = barcodeResult;
                }
            }
            catch (Exception ex)
            {
                // Handle exceptions and log the error.
                System.Diagnostics.Debug.WriteLine(ex);
            }
        }

        public async Task SaveToDownloadsAsync(byte[] fileData, string fileName)
        {
            var downloadsPath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);
            var filePath = Path.Combine(downloadsPath.AbsolutePath, fileName);

            try
            {
                // Create the directory if it doesn't exist.
                if (!Directory.Exists(downloadsPath.AbsolutePath))
                {
                    Directory.CreateDirectory(downloadsPath.AbsolutePath);
                }

                // Save the file to the Downloads folder.
                await File.WriteAllBytesAsync(filePath, fileData);
            }
            catch (Exception ex)
            {
                // Log errors if file saving fails.
                System.Diagnostics.Debug.WriteLine("Error saving file: " + ex.Message);
            }
        }
    }
}
$vbLabelText   $csharpLabel

Execute o projeto

Isso mostrará como executar o projeto e usar o recurso de código de barras.

Execute .NET MAUI App project

Baixar Projeto de App .NET MAUI

Você pode baixar o código completo deste guia. Ele está compactado em um arquivo zip que pode ser aberto no Visual Studio como um projeto de aplicativo .NET MAUI .

Clique aqui para baixar o projeto.

Perguntas frequentes

Como posso criar e ler códigos de barras em um aplicativo .NET MAUI para Android?

Você pode usar o pacote BarCode.Android em um projeto .NET MAUI para criar e ler códigos de barras em dispositivos Android. Isso envolve configurar o pacote por meio do NuGet no Visual Studio e implementar as funcionalidades de código de barras usando os métodos fornecidos, como WriteBarcode e ReadBarcode .

Quais são os passos necessários para configurar a funcionalidade de leitura de código de barras para Android em um projeto .NET MAUI?

Para configurar a funcionalidade de código de barras em um projeto .NET MAUI, instale o pacote BarCode.Android usando o NuGet, configure seu arquivo .csproj para incluir condicionalmente o pacote para Android e certifique-se de que seu pacote Android esteja configurado por meio de um arquivo BundleConfig.json.

Como faço para configurar o arquivo .csproj para incluir a funcionalidade de código de barras somente para Android?

Edite o arquivo .csproj adicionando um com uma condição direcionada ao Android. Inclua o pacote BarCode.Android neste grupo para garantir que a funcionalidade de código de barras seja adicionada apenas para compilações do Android.

Qual a finalidade de usar um arquivo BundleConfig.json em projetos Android?

O arquivo BundleConfig.json é usado para configurar as definições do pacote Android, garantindo que as bibliotecas nativas não estejam compactadas. Isso é essencial para que a biblioteca de código de barras funcione corretamente em dispositivos Android.

Como posso projetar uma interface para operações com código de barras em um aplicativo .NET MAUI?

Projete a interface do aplicativo usando XAML para permitir que os usuários insiram dados para gerar códigos de barras e códigos QR. Inclua botões para selecionar os documentos dos quais os códigos de barras serão lidos e para gerar, salvar e escanear os códigos de barras.

Quais métodos são usados em C# para gerar e ler códigos de barras em um aplicativo?

Em um aplicativo .NET MAUI, use métodos como WriteBarcode , WriteQRcode e ReadBarcode para gerar códigos de barras, criar códigos QR e ler códigos de barras de arquivos, respectivamente.

Como posso testar os recursos de código de barras no meu aplicativo .NET MAUI?

Após configurar seu projeto com as configurações necessárias e as implementações de código de barras, você pode testar os recursos executando o projeto em um dispositivo Android ou emulador por meio do Visual Studio.

Onde posso encontrar um projeto completo de aplicativo MAUI em .NET com funcionalidades de código de barras?

Um projeto completo de aplicativo .NET MAUI com funcionalidades de código de barras pode ser baixado em formato zip no site da IronBarcode. Este projeto pode ser aberto no Visual Studio para exploração e personalização adicionais.

É necessária uma licença para usar a biblioteca de código de barras no meu projeto Android?

Sim, para usar a biblioteca de código de barras no seu projeto, você precisa de uma chave de licença de avaliação ou paga. Você precisa inserir essa chave no construtor da MainPage para ativar os recursos da biblioteca.

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 Downloads 2,108,094 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package BarCode
executar um exemplo Veja seu fio se transformar em um código de barras.