Генерация изображения штрих-кода в MAUI приложении для Android

Категория: Штрих-коды.NETAndroid

7 мая 2024

В данной статье рассказывается как создать MAUI приложение для генерации штрих-кода в Android. Для генерации штрих-кода используется VintaSoft Barcode .NET SDK.

Для выполнения задачи требуется выполнить следующие шаги:
  1. Создайте пустое MAUI приложение.
    Откройте Visual Studio .NET 2022 и создайте новый проект типа .NET MAUI приложения:

    Укажите, что проект должен использовать .NET 8.0:

  2. Укажите, что MAUI приложение будет использоваться в Android.
    Откройте файл проекта и выберите целевую платформу Android.

  3. Добавьте ссылки на Vintasoft Barcode nuget-пакеты в MAUI приложение.
    Добавьте ссылки на Vintasoft.Barcode nuget-пакет и Vintasoft.Barcode.SkiaSharp nuget-пакет в MAUI приложение.
    Ссылка на Vintasoft.Barcode.SkiaSharp nuget-пакет необходима только в том случае, если SDK должен отображать текстовое значение штрих-кода на изображении штрих-кода. Vintasoft.Barcode.ImageSharp nuget-пакет можно использовать вместо Vintasoft.Barcode.SkiaSharp nuget-пакета.



    Добавьте ссылку на SkiaSharp nuget-пакет в MAUI приложение.

  4. Укажите, что .NET-компилятор не должен минимизировать код .NET-сборок Vintasoft и сборки Mono.Android.
    Откройте файл MAUI проекта и добавьте элементы проекта, которые позволяют указать, что .NET-компилятор не должен минимизировать .NET-сборки Vintasoft и .NET-сборку Mono.Android, если требуется минимизация .NET-сборок MAUI приложения:


    Вот элементы проекта, которые позволяют указать, что .NET-компилятор не должен минимизировать .NET-сборки Vintasoft и .NET-сборку Mono.Android, если требуется минимизация .NET-сборок MAUI приложения:
    <ItemGroup>
        <TrimmerRootAssembly Include="Vintasoft.Barcode" RootMode="library" />
        <TrimmerRootAssembly Include="Vintasoft.Barcode.SkiaSharp" RootMode="library" />
        <TrimmerRootAssembly Include="Vintasoft.Shared" RootMode="library" />
        <TrimmerRootAssembly Include="Mono.Android" RootMode="library" />
    </ItemGroup>
    
  5. Добавьте UI-элемент для отображения сгенерированного изображения штрих-кода и кнопку для генерации изображения штрих-кода.
    Откройте XAML-разметку главной страницы в файле "MainPage.xaml" и добавьте UI-элемент для отображения сгенерированного изображения штрих-кода и кнопку для генерации изображения штрих-кода на страницу.


    Вот XAML-код разметки главной страницы (страница содержит UI-элемент для отображения сгенерированного изображения штрих-кода и кнопку для генерации изображения штрих-кода):
    <?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="MauiApp1.MainPage">
        <ScrollView>
            <VerticalStackLayout
                Padding="30,0"
                Spacing="25">
                <Image x:Name="barcodeImage" HeightRequest="300" Aspect="AspectFit"/>
    
                <Button
                    x:Name="GenerateBarcodeBtn"
                    Text="Generate Barcode" 
                    Clicked="OnGenerateBarcodeClicked"
                    HorizontalOptions="Fill" />
            </VerticalStackLayout>
        </ScrollView>
    </ContentPage>
    
  6. Добавьте C# код, который регистрирует оценочную версию VintaSoft Barcode .NET SDK.
    Получите C# код для регистрации оценочной версии VintaSoft Barcode .NET SDK в Android как описано в документации, и вставьте полученный код в C# код файла "MainPage.xaml.cs".


    Вот C# код, который регистрирует оценочную версию VintaSoft Barcode .NET SDK:
    // get the application name
    string applicationName = Vintasoft.Barcode.BarcodeGlobalSettings.ApplicationName;
    // if MAUI application is using in Android
    if (applicationName.StartsWith("Android"))
    {
        // register the evaluation license for VintaSoft Barcode .NET SDK
        Vintasoft.Barcode.BarcodeGlobalSettings.Register("LINUX_EVAL_USER", "LINUX_EVAL_USER_EMAIL", "LINUX_EVAL_END_DATE", "LINUX_EVAL_REG_CODE");
    }
    
  7. Добавьте C# код, который генерирует изображение штрих-кода и отображает сгенерированное изображение штрих-кода на форме MAUI приложения.
    Откройте файл "MainPage.xaml.cs" и добавьте C# код, который создает изображение штрих-кода и отображает сгенерированное изображение штрих-кода на форме MAUI приложения, в метод OnGenerateBarcodeClicked.


    Вот C# код, который генерирует изображение штрих-кода и отображает сгенерированное изображение в Image-контроле:
    namespace MauiApp1
    {
        public partial class MainPage : ContentPage
        {
            int count = 0;
    
            public MainPage()
            {
                InitializeComponent();
            }
    
            private void OnGenerateBarcodeClicked(object sender, EventArgs e)
            {
                // get the application name
                string applicationName = Vintasoft.Barcode.BarcodeGlobalSettings.ApplicationName;
                // if MAUI application is using in Android
                if (applicationName.StartsWith("Android"))
                {
                    // register the evaluation license for VintaSoft Barcode .NET SDK
                    Vintasoft.Barcode.BarcodeGlobalSettings.Register("LINUX_EVAL_USER", "LINUX_EVAL_USER_EMAIL", "LINUX_EVAL_END_DATE", "LINUX_EVAL_REG_CODE");
                }
    
                // create the barcode writer
                using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
                {
                    // specify that barcode writer must generate DataMatrix barcode
                    barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.DataMatrix;
                    // specify value for DataMatrix barcode
                    barcodeWriter.Settings.Value = "12345";
    
                    // create memory stream that will store generated barcode image as PNG file
                    MemoryStream stream = new MemoryStream();
                    // generate barcode image and save as PNG file to the memory stream
                    barcodeWriter.SaveBarcodeAsImage(stream, "png");
                    stream.Position = 0;
    
                    barcodeImage.Source = ImageSource.FromStream(() => stream);
                }
            }
        }
    }
    
  8. Подпишите .NET-сборку MAUI приложения, используя файл строгого имени.
    Если у вас есть файл строгого имени, подпишите .NET-сборку MAUI приложения, используя файл строгого имени.


    Если у вас нет файла строгого имени, прочтите, как создать файл строгого имени здесь.
  9. Запустите MAUI приложение в эмуляторе Android и посмотрите результат.