Altbilgi içeriğine atla
IRONBARCODE KULLANARAK

IronBarcode ile MAUI Çizgikodu Tarayıcı: Adım Adım Kılavuz

Mobil uygulamalar, envanter yönetimi, satış noktası sistemleri ve ürün takibi için giderek daha fazla barkod taramaya güveniyor. Bir MAUI barkod tarayıcı oluşturmak, QR kodları, Veri Matrisi ve diğer barkod formatlarını algılamak için bir kamera akışı ile görüntü dosyası işlemini birleştirerek barkod algılamayı doğrudan .NET MAUI uygulamanıza entegre etmenizi sağlar. Birçok kütüphane kamera önizlemesine odaklanırken, IronBarcode, eğimli açılar, zayıf aydınlatma koşulları ve hasar görmüş etiketler gibi zorlu koşullar altında bile ekstra yapılandırma gerektirmeden barkodları doğru bir şekilde okuma konusunda mükemmeldir.

Bu kılavuz, IronBarcode kullanarak bir .NET MAUI projesinde barkod taramanın uygulanmasının her adımını açıklar. Sonuna geldiğinizde, tek bir görüntü dosyasından birden fazla barkodu tarayabilir, cihaz kamerasından barkodlar yakalayabilir ve kütüphaneyi kendi çapraz platform projelerinize güvenle entegre edebileceksiniz.

Bir MAUI Barkod Tarayıcı Oluşturmak İçin Ön Koşullar Nelerdir?

Başlamadan önce, geliştirme ortamınızın düzenli olduğundan emin olun:

  • Visual Studio 2022 (v17.8 veya sonrası) .NET MAUI iş yükü yüklü
  • .NET 10 SDK -- resmi .NET sitesinden indirin
  • Temel C# bilgisi -- async/await desenleriyle tanışıklık yardımcı olacaktır
  • Kamera testi için yapılandırılmış fiziksel cihaz veya emülatör
  • IronBarcode lisansı -- değerlendirme için bir ücretsiz deneme mevcut

Projenizi oluşturmadan önce Visual Studio'da MAUI iş yükünün yüklü olduğundan emin olmak, önemli miktarda sorun giderme zamanından tasarruf sağlar. Bu durumu, Visual Studio Yükleyici'de "Bireysel bileşenler" altında ".NET Çoklu platform Uygulama UI geliştirme." arayarak doğrulayabilirsiniz.

IronBarcode'un MAUI ile Nasıl Uyduğunu Anlamak

.NET MAUI, Android, iOS, macOS ve Windows'u hedefleyen tek bir kod tabanı sunar. Bu ortamda barkod taramanın zorluğu, her platformun kamera erişimini farklı şekilde yönetmesi gerçeğidir. IronBarcode, bunun ustesinden görüntü işleme katmaninda calisarak gelir -- siz MAUI'nin MediaPicker araciligiyla görüntüyu yakalarsiniz, sonra baytlari analiz icin IronBarcode'a verirsiniz.

Bu endişelerin ayrılması, kodunuzu temiz tutar ve platforma özgü barkod SDK'larından kaçırır. IronBarcode'un çevrimdışı işleme modeli ayrıca barkod verilerinin cihaza bırakılmasını engelleyerek düzenlenmiş sektörlerdeki uygulamalar için önem taşır.

Desteklenen Barkod Formatları

IronBarcode, geniş bir format yelpazesini okur, bunlar şunları içermektedir:

IronBarcode tarafından desteklenen barkod formatları
Format Kategorisi Formatlar Genel Kullanım Durumları
1D Lineer Kod 128, Kod 39, EAN-13, UPC-A, ITF Perakende, lojistik, sağlık
2D Matris QR Kod, Veri Matrisi, Aztek, PDF417 Mobil ödemeler, biletleme, üretim
Posta USPS, Royal Mail, Deutsche Post Kargo ve posta hizmetleri
Uzmanlık MaxiCode, GS1, MicroPDF417 Tedarik zinciri, taşımacılık, paketler

MAUI Barkod Tarama Projesi Nasıl Kurulur?

Visual Studio 2022'de yeni bir .NET MAUI Uygulamasi projesi oluşturarak başlayin. Adini BarcodeScannerApp koyun ve hedef dieverim olarak .NET 10'u secin. Visual Studio, Android, iOS, macOS ve Windows için platforma özgü klasörleri içeren standart MAUI proje yapısını oluşturur.

NuGet ile IronBarcode Yükleme

NuGet Paket Yöneticisi Konsolu'nu açın ve çalıştırın:

Install-Package BarCode

Alternatif olarak, Cozum Gezgini'nde projenize sag tiklayin, 'NuGet Paketlerini Yonet' secenegini secin, IronBarCode arayin ve en son karali surunu yukleyin. Özellikle .NET MAUI projeleri için, IronBarcode'un NuGet paketi gerekli tüm yerel bağımlılıkları içerir.

Lisansınızı Etkinleştirme

Kurulumdan sonra, IronBarcode'u uygulama yaşam döngüsünün erken aşamalarında lisans anahtarınızla etkinleştirin. En iyi yer, uygulama oluşturucu calismadan once MauiProgram.cs'dir:

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Iron Software web sitesinden ücretsiz deneme lisansı anahtarı edinin. Deneme anahtarları, geliştirme sırasında zaman sınırlamaları olmadan tüm özellikleri değerlendirmenize olanak tanır, ancak çıktınızda tam bir lisans uygulayana kadar deneme filigranı bulunabilir.

Android ve iOS için Kamera İzinleri Nasıl Yapılandırılır?

Platforma özgü kamera izinleri, barkod tarama işlevselliği için esastır. Her platform, MediaPicker.CapturePhotoAsync() basarili olmadan once, kendi manifest dosyalarinda özgüne ayar gerektirir.

Android İzinleri

Kamera erişimi beyan etmek icin Platforms/Android/AndroidManifest.xml duzenleyin:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" />
XML

android.permission.CAMERA girdisi, kullanicidan calisma izinleri talep eder. uses-feature beyanlari, uygulamanizin kamera donanimi ve otofokus kapasitesi gerektirdigini Google Play Store'a bildirir. Bunlar olmadan, Android cihazlar izin isteğini verebilir ancak yine de dahili olarak kamera erişimini engelleyebilir.

Android 13 ve sonrasi (API seviyesi 33+), ayrintili medya izinlerini MainActivity.cs kullanarak ele almaniz gerekebilir. MAUI MediaPicker soyutlamasi bunlarin cogunu otomatik olarak handle eder, ancak yayinlamadan once fiziksel cihaz testi onerilir.

iOS İzinleri

Kamera kullanim aciklamasini dahil etmek icin Platforms/iOS/Info.plist duzenleyin:

<key>NSCameraUsageDescription</key>
<string>This app requires camera access to scan barcodes</string>
<key>NSCameraUsageDescription</key>
<string>This app requires camera access to scan barcodes</string>
XML

iOS, her gizlilik duyarlı izin için insan okuyabilir bir açıklama gerektirir. Apple'ın App Store inceleme süreci, bu açıklamanın eksik veya belirsiz olması durumunda uygulamanızı reddeder. Metin, uygulama ilk kez kamera erişimi istediğinde kullanıcıya gösterilen sistem izin diyalogunda görünür.

iPadOS icin, kullanicilarin canli kameranin yaninda kaydedilmis fotolardan barkod taratmalara izin vermeyi planliyorsaniz NSPhotoLibraryUsageDescription eklemeyi de dusunun.

Windows ve macOS

Windows Masaüstü ve macOS hedefleri için, kamera erişim izinleri sırasıyla uygulama manifesti ve yetkilendirme dosyaları aracılığıyla yönetilir. MAUI framework'ü bunu buyuk olcude sablon seviyesinde ele alir, ancak Package.appxmanifest icinde webkamera cihaz kapasitesini dahil ettigini dogrulayin.

Barkod Tarayıcı Arayüzü Nasıl Oluşturulur?

Tarama surecinde kullanicilara net bir geri bildirim veren MainPage.xaml icinde bir kullanıcı arayuzu tasarlayin. Minimum ama işlevsel bir düzen, bir ön izleme resmi, bir sonuç görüntüleme alanı ve bir tarama tetikleme düğmesi içerir:

<?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="BarcodeScannerApp.MainPage"
             Title="Barcode Scanner">
    <VerticalStackLayout Padding="20" Spacing="20">
        <Label Text="Point the camera at a barcode"
               FontSize="16"
               HorizontalOptions="Center"
               TextColor="#555555" />
        <Image x:Name="CapturedImage"
               HeightRequest="300"
               Aspect="AspectFit"
               BackgroundColor="#F0F0F0" />
        <Label x:Name="ResultLabel"
               Text="Tap Scan to begin"
               FontSize="18"
               HorizontalOptions="Center"
               FontAttributes="Bold" />
        <Label x:Name="FormatLabel"
               Text=""
               FontSize="13"
               HorizontalOptions="Center"
               TextColor="#888888" />
        <Button Text="Scan Barcode"
                Clicked="OnScanClicked"
                BackgroundColor="#007ACC"
                TextColor="White"
                CornerRadius="8"
                HeightRequest="50" />
        <Button Text="Load from Gallery"
                Clicked="OnPickFromGalleryClicked"
                BackgroundColor="#5C5C5C"
                TextColor="White"
                CornerRadius="8"
                HeightRequest="50" />
    </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="BarcodeScannerApp.MainPage"
             Title="Barcode Scanner">
    <VerticalStackLayout Padding="20" Spacing="20">
        <Label Text="Point the camera at a barcode"
               FontSize="16"
               HorizontalOptions="Center"
               TextColor="#555555" />
        <Image x:Name="CapturedImage"
               HeightRequest="300"
               Aspect="AspectFit"
               BackgroundColor="#F0F0F0" />
        <Label x:Name="ResultLabel"
               Text="Tap Scan to begin"
               FontSize="18"
               HorizontalOptions="Center"
               FontAttributes="Bold" />
        <Label x:Name="FormatLabel"
               Text=""
               FontSize="13"
               HorizontalOptions="Center"
               TextColor="#888888" />
        <Button Text="Scan Barcode"
                Clicked="OnScanClicked"
                BackgroundColor="#007ACC"
                TextColor="White"
                CornerRadius="8"
                HeightRequest="50" />
        <Button Text="Load from Gallery"
                Clicked="OnPickFromGalleryClicked"
                BackgroundColor="#5C5C5C"
                TextColor="White"
                CornerRadius="8"
                HeightRequest="50" />
    </VerticalStackLayout>
</ContentPage>
XML

Düzen, iki tarama yolu sağlar: kamerayla yeni bir fotoğraf çekmek ve galeriden mevcut bir resmi seçmek. Bu, kullanıcıların önceden barkodları fotoğrafladığı veya resimleri e-posta ile aldığı iş akışları için önemlidir. FormatLabel tespit edilen barkod formatini ve debug işlemleri sirasinda ve kullanıcı doğrulama icin yardimci olan cozulmus degeri görüntüler.

Tarama Durum Geri Bildirimi Ekleme

Duzgun bir deneyim icin, tarama tuslarini bir ActivityIndicator icine sarmayi dusunun ki işleme başladiginda gorunsun. IronBarcode'un asenkron API'si bu işlemi kolaylastirir -- IsRunning = true ayarlayabilir ve BarcodeReader.ReadAsync cagrildiktan sonra finally blogunda sifirlayabilirsiniz.

Barkod Okuyucu İşlevselliği Nasıl Uygulanır?

Esas tarama mantigini MainPage.xaml.cs icinde gerceklestirin. Aşağıdaki kod, uygun async kalıpları ve hata yönetimi ile hem kamera yakalama hem de galeri seçim işlemlerini ele alır:

using IronBarCode;
using IronSoftware.Drawing;

namespace BarcodeScannerApp;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private async void OnScanClicked(object sender, EventArgs e)
    {
        await ScanFromSource(() => MediaPicker.Default.CapturePhotoAsync());
    }

    private async void OnPickFromGalleryClicked(object sender, EventArgs e)
    {
        await ScanFromSource(() => MediaPicker.Default.PickPhotoAsync());
    }

    private async Task ScanFromSource(Func<Task<FileResult?>> sourceFunc)
    {
        try
        {
            var photo = await sourceFunc();
            if (photo is null) return;

            using var stream = await photo.OpenReadAsync();
            using var memoryStream = new MemoryStream();
            await stream.CopyToAsync(memoryStream);
            var imageBytes = memoryStream.ToArray();

            // Show the captured image in the UI
            CapturedImage.Source = ImageSource.FromStream(() =>
                new MemoryStream(imageBytes));

            // Process with IronBarcode
            var bitmap = AnyBitmap.FromBytes(imageBytes);
            var options = new BarcodeReaderOptions
            {
                Speed = ReadingSpeed.Balanced,
                ExpectMultipleBarcodes = false
            };

            var results = await BarcodeReader.ReadAsync(bitmap, options);

            if (results.Any())
            {
                var first = results.First();
                ResultLabel.Text = $"Value: {first.Value}";
                FormatLabel.Text = $"Format: {first.BarcodeType}";
            }
            else
            {
                ResultLabel.Text = "No barcode detected";
                FormatLabel.Text = string.Empty;
            }
        }
        catch (FeatureNotSupportedException)
        {
            await DisplayAlert("Unsupported",
                "Camera is not available on this device.", "OK");
        }
        catch (PermissionException)
        {
            await DisplayAlert("Permission Required",
                "Please grant camera permission in Settings.", "OK");
        }
        catch (Exception ex)
        {
            await DisplayAlert("Error",
                $"Scanning failed: {ex.Message}", "OK");
        }
    }
}
using IronBarCode;
using IronSoftware.Drawing;

namespace BarcodeScannerApp;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private async void OnScanClicked(object sender, EventArgs e)
    {
        await ScanFromSource(() => MediaPicker.Default.CapturePhotoAsync());
    }

    private async void OnPickFromGalleryClicked(object sender, EventArgs e)
    {
        await ScanFromSource(() => MediaPicker.Default.PickPhotoAsync());
    }

    private async Task ScanFromSource(Func<Task<FileResult?>> sourceFunc)
    {
        try
        {
            var photo = await sourceFunc();
            if (photo is null) return;

            using var stream = await photo.OpenReadAsync();
            using var memoryStream = new MemoryStream();
            await stream.CopyToAsync(memoryStream);
            var imageBytes = memoryStream.ToArray();

            // Show the captured image in the UI
            CapturedImage.Source = ImageSource.FromStream(() =>
                new MemoryStream(imageBytes));

            // Process with IronBarcode
            var bitmap = AnyBitmap.FromBytes(imageBytes);
            var options = new BarcodeReaderOptions
            {
                Speed = ReadingSpeed.Balanced,
                ExpectMultipleBarcodes = false
            };

            var results = await BarcodeReader.ReadAsync(bitmap, options);

            if (results.Any())
            {
                var first = results.First();
                ResultLabel.Text = $"Value: {first.Value}";
                FormatLabel.Text = $"Format: {first.BarcodeType}";
            }
            else
            {
                ResultLabel.Text = "No barcode detected";
                FormatLabel.Text = string.Empty;
            }
        }
        catch (FeatureNotSupportedException)
        {
            await DisplayAlert("Unsupported",
                "Camera is not available on this device.", "OK");
        }
        catch (PermissionException)
        {
            await DisplayAlert("Permission Required",
                "Please grant camera permission in Settings.", "OK");
        }
        catch (Exception ex)
        {
            await DisplayAlert("Error",
                $"Scanning failed: {ex.Message}", "OK");
        }
    }
}
Imports IronBarCode
Imports IronSoftware.Drawing

Namespace BarcodeScannerApp

    Public Partial Class MainPage
        Inherits ContentPage

        Public Sub New()
            InitializeComponent()
        End Sub

        Private Async Sub OnScanClicked(sender As Object, e As EventArgs)
            Await ScanFromSource(Function() MediaPicker.Default.CapturePhotoAsync())
        End Sub

        Private Async Sub OnPickFromGalleryClicked(sender As Object, e As EventArgs)
            Await ScanFromSource(Function() MediaPicker.Default.PickPhotoAsync())
        End Sub

        Private Async Function ScanFromSource(sourceFunc As Func(Of Task(Of FileResult?))) As Task
            Try
                Dim photo = Await sourceFunc()
                If photo Is Nothing Then Return

                Using stream = Await photo.OpenReadAsync()
                    Using memoryStream = New MemoryStream()
                        Await stream.CopyToAsync(memoryStream)
                        Dim imageBytes = memoryStream.ToArray()

                        ' Show the captured image in the UI
                        CapturedImage.Source = ImageSource.FromStream(Function() New MemoryStream(imageBytes))

                        ' Process with IronBarcode
                        Dim bitmap = AnyBitmap.FromBytes(imageBytes)
                        Dim options = New BarcodeReaderOptions With {
                            .Speed = ReadingSpeed.Balanced,
                            .ExpectMultipleBarcodes = False
                        }

                        Dim results = Await BarcodeReader.ReadAsync(bitmap, options)

                        If results.Any() Then
                            Dim first = results.First()
                            ResultLabel.Text = $"Value: {first.Value}"
                            FormatLabel.Text = $"Format: {first.BarcodeType}"
                        Else
                            ResultLabel.Text = "No barcode detected"
                            FormatLabel.Text = String.Empty
                        End If
                    End Using
                End Using
            Catch ex As FeatureNotSupportedException
                Await DisplayAlert("Unsupported", "Camera is not available on this device.", "OK")
            Catch ex As PermissionException
                Await DisplayAlert("Permission Required", "Please grant camera permission in Settings.", "OK")
            Catch ex As Exception
                Await DisplayAlert("Error", $"Scanning failed: {ex.Message}", "OK")
            End Try
        End Function
    End Class

End Namespace
$vbLabelText   $csharpLabel

Bu uygulama, kamera ve galeri yolları arasında görüntü işleme mantığını kopyalamaktan kaçınmak için bir paylaşılmış ScanFromSource yardımcı yöntemi kullanır. AnyBitmap.FromBytes yöntemi JPEG, PNG, WebP ve diğer yaygin görüntü formatlarini otomatik olarak isler -- manuel format tespiti gerekmez.

Sonuc nesnesi first.Value (çözülen metin), first.BarcodeType (format enumu) ve tespit edilen barkod bölgesinin kırpılmış bir görüntüsünü sağlayan first.BarcodeImage gibi özellikleri sunar. Tam liste için BarcodeResult sınıf belgelerine bakın.

Tarama Uygulamanızı Test Etme

Kod yerleştirildikten sonra, standart bir barkodla test edebilirsiniz:

IronBarcode kullanarak bir MAUI Barkod Taraayıcısı Nasıl Oluşturulur: Şekil 2 - Giriş test barkodu

Tarandıktan sonra, çözümlenen değer ekranda görünür:

IronBarcode kullanarak bir MAUI Barkod Tarayıcısı Nasıl Oluşturulur: Şekil 3 - Tarama Barkodu Değeri

Gelişmiş Tarama Seçeneklerini Nasıl Yapılandırırsınız?

IronBarCode, belirli kullanım durumunuza göre algılama davranışını ayarlamanızı sağlayan bir BarcodeReaderOptions nesnesi ortaya çıkarır. Bu seçenekleri anlamak, uygulamanızın ihtiyaçlarına bağlı olarak hızı doğruluğa karşı dengelemenizde yardımcı olur.

Belirli Barkod Türlerini Hedefleme

Beklediğiniz belirli barkod türlerini belirtmek, IronBarcode'un gereksiz format kontrollerinden kaçınarak işlem süresini önemli ölçüde azaltır:

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};

var results = await BarcodeReader.ReadAsync(bitmap, options);
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};

var results = await BarcodeReader.ReadAsync(bitmap, options);
Imports System.Threading.Tasks

Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True,
    .ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}

Dim results = Await BarcodeReader.ReadAsync(bitmap, options)
$vbLabelText   $csharpLabel

IronBarcode kullanarak bir MAUI Barkod Taraayıcısı Nasıl Oluşturulur: Şekil 4 - Aynı görüntüden taranan birden çok kod

ExpectMultipleBarcodes = true ayarlamak, paket etiketi yüzey akışlarında tek bir paket etiketinde bir düzine barkod içerebileceği durumlar icin ilk sonucu bulduktan sonra IronBarcode'un taramaya devam etmesi talimatını verir.

Okuma Hızı Seçenekleri

ReadingSpeed enumu dört seviye sunar: ExtremeDetail, Detailed, Balanced, ve QuickScan. Barkodlarin temiz ve iyi aydinlatildigi yuksek hacimli senaryolar icin QuickScan kullanin. Düşük çözünürlüklü kamera çekimlerinden tararken veya kısmen zarar görmüş etiketlerden Detailed veya ExtremeDetail geçiş yapın.

Görüntü düzeltme filtreleri ve güven derecesi eşikleri de dahil olmak üzere tuning BarcodeReaderOptions hakkında daha fazla bilgi için belgeler ayrıntılı örnekler sağlar.

Görüntü Düzeltme ve Ön İşleme

IronBarcode, döndürülmüş, eğik veya kötü aydınlatılmış taramalarda bile otomatik olarak görüntü düzeltmeleri içeren yerleşik özellikler içerir. BarcodeReaderOptions.ImageFilters araciligiyla manuel olarak on işlem filtreleri uygulayabilirsiniz:

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed,
    ImageFilters = new ImageFilterCollection
    {
        new SharpenFilter(),
        new ContrastFilter(1.2f)
    }
};
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed,
    ImageFilters = new ImageFilterCollection
    {
        new SharpenFilter(),
        new ContrastFilter(1.2f)
    }
};
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Detailed,
    .ImageFilters = New ImageFilterCollection From {
        New SharpenFilter(),
        New ContrastFilter(1.2F)
    }
}
$vbLabelText   $csharpLabel

Ön işleme filtreleri, uygulamanın düşük kaliteli kamera sensörlerine sahip eski Android cihazlarını hedeflemesi veya kullanıcıların depo veya açık hava ortamlarında olduğu gibi düşük ışık koşullarında barkodları fotoğraflamasının olası olduğu durumlarda özellikle yararlıdır.

Yaygın Sorun Giderme Senaryolarını Nasıl Ele Alırsınız?

İyi yapılandırılmış bir MAUI barkod tarayıcıya rağmen, cihaz spesifik davranışları, görüntü kalitesi sorunları veya platform kısıtlamaları nedeniyle sorunlar ortaya çıkabilir.

Kamera Açılmıyor

Kamera başlatilamazsa, hem AndroidManifest.xml hem de Info.plist içinde izinlerin doğru şekilde beyan edildiğini kontrol edin. Ardından, sıcak güncelleme yerine temiz bir yapıdan uygulamayı yeniden dağıtın. Android'de, test cihazınızın standart dışı bir kamera yapılandırması kullanıp kullanmadığını da kontrol edin - çok sayıda kameraya sahip bazı cihazlar için lens seçiminin açık şekilde belirtilmesi gerekir.

Simulatorde MediaPicker.CapturePhotoAsync() desteklenmez. Her zaman fiziksel bir cihazda kamera özelliklerini test edin. Emülatör, galeri seçimi icin PickPhotoAsync destekler, yüklü görüntülerle temel UI testleri icin kullanabilirsiniz.

Zayıf Tarama Doğruluğu

IronBarcode hiçbir sonuç döndürmez veya yanlış değerler döndürürse, şu ayarlamaları deneyin:

  • Speed'i ReadingSpeed.Detailed veya ExtremeDetail olarak arttirin
  • Imagenin filtre boru hattina SharpenFilter ve ContrastFilter ekleyin
  • Yakalanan görüntü çözünürlüğünün en az 720p olduğundan emin olun; daha düşük çözünürlükler, Data Matrix gibi yoğun formatlarla algılamayı zorlaştırabilir
  • Barkod tipinin ExpectBarcodeTypes maskenize dahil olup olmadığını kontrol edin

IronBarcode sorun giderme kılavuzu, format-spesifik sorunlar için ek tanı adımlarını kapsar.

Bellek Yönetimi

Buyuk kamerali görüntüler MemoryStream'e yuklendiklerinde çok fazla bellek tuketirler. Tüm stream nesnelerinde her zaman using ifadeleri kullanarak imha saglayin. Kullanicilar sirayla birden fazla ogeleri taradığı surekli tarama iş akışları icin, çöp toplayicisini beklemek yerine işlemden sonra bitmap.Dispose() metodunu acikca cagirin.

Sınırlı yığın alanına sahip Android cihazlarda, IronBarcode'a geçirmeden önce görüntüyü düşürmeyi düşünün, taramalar temiz ve yüksek kontrastlı barkodlar olduğunda, çözmeye tam çözünürlük gerekmezse.

iOS'a Özgü Platform Davranışı

iOS'ta, uygulamanız kamera izni istediğinde, sistem bir kerelik bir diyalog gösterir. Kullanıcı bunu reddederse, daha sonraki CapturePhotoAsync çagirlari bir PermissionException oluşturur. Bu durumu, kullaniciyi Ayarlara yönlendirerek yönetin, bunu AppInfo.ShowSettingsUI() ile yapabilirsiniz.

App Store'a göndermeden önce Info.plist içinde NSCameraUsageDescription'in mevcut oldugunu dogrulayin. Eksik gizlilik dizelemeleri, inceleme ekibinden ayrıntılı bir açıklama almadan otomatik red ile sonuçlanır. İzin isteği zamanlaması ve mesajlaşması üzerine en iyi uygulamalar için Apple İnsan Arayüzü Kılavuzu'nu gözden geçirin.

Sıradaki Adımlarınız Neler?

IronBarcode ile çalışan bir MAUI barkod tarayıcısına sahip olduktan sonra, uygulamanızın gereksinimlerine bağlı olarak birkaç yol mevcuttur:

  • Barkodlar Oluşturun -- IronBarcode, dize verilerinden QR kodları, Code 128 etiketleri ve diğer formatları oluşturmak için barkod oluşturma API'si içerir
  • Toplu tarama -- bir döngü halinde birden fazla görüntü dosyasını BarcodeReader.ReadAsync ile ExpectMultipleBarcodes = true isleyin; toplu tarama örneklerine bakın
  • PDF barkod çıkartma -- IronBarcode, aynı BarcodeReader sınıfını kullanarak PDF belgelerinin icine gomulu barkodlari okuyabilir; PDF barkod okuma belgelerini keşfedin
  • Stil ve markalama -- oluşturulan barkodların görsel çıktısını renkler, logolar ve açıklamalarla özelleştirin; barkod stil seçeneklerine bakın
  • Diğer IronSoftware ürünleri -- MAUI uygulamanız da PDF oluşturma, OCR veya elektronik tablo desteği gerektiriyorsa, tutarlı çapraz platform yetenekleri için tam Iron Suite'i keşfedin

ücretsiz deneme lisansı ile başlayın, değerlendirme süreniz boyunca kısıtlama olmadan dağıtım yapın. Üretim lisanslama seçenekleri ve hacim fiyatlandırması için IronBarcode fiyatlandırma sayfasını ziyaret edin. IronBarcode dokümantasyon portalı ve IronBarcode GitHub deposu ek kod örnekleri ve topluluk desteği sağlar.

Sıkça Sorulan Sorular

MAUI barkod tarayıcısı için IronBarcode kullanmanın avantajı nedir?

IronBarcode, görüntü katmanında barkodları işler, çevrimdışı çalışır, 30'dan fazla formatı destekler ve ek bir yapılandırmaya gerek kalmadan yan eğimli açılar ve zayıf ışık gibi zorlu koşullarla başa çıkar.

IronBarcode tek bir görüntüde birden fazla barkodu tespit edebilir mi?

Evet. BarcodeReaderOptions içinde ExpectMultipleBarcodes = true ayarlayın ve BarcodeReader.ReadAsync çağırın. IronBarcode, sonuç koleksiyonunda tespit edilen tüm barkodları döndürecektir.

MAUI'de Android ve iOS için kamera izinlerini nasıl yapılandırırım?

Android için, AndroidManifest.xml'e CAMERA kullanımı-izin ve kullanım-özelliği öğelerini ekleyin. iOS için, Info.plist'e açıklamayı insan tarafından okunabilir hale getiren NSCameraUsageDescription ekleyin.

IronBarcode çevrimdışı barkod taramayı destekliyor mu?

Evet. IronBarcode, resimleri tamamen cihazda işler ve verileri dış sunuculara göndermez, bu da gizlilik hassasiyetli uygulamalar için önemlidir.

IronBarcode MAUI'de hangi barkod formatlarını destekler?

IronBarcode, QR Kod, Code 128, Code 39, EAN-13, UPC-A, Data Matrix, PDF417, Aztec, MaxiCode ve daha fazlasını destekler. Belirli formatları hedeflemek için BarcodeEncoding bayraklarını kullanabilirsiniz.

Kötü kalitedeki görüntüler için tarama doğruluğunu nasıl artırırım?

Okuma Hızını Ayrıntılı veya Aşırı Ayrıntılı olarak ayarlayın, ImageFilters'a Keskinleştir Filtre ve Kontrast Filtre ekleyin ve yakalanan görüntünün en az 720p çözünürlükte olduğundan emin olun.

IronBarcode, MAUI uygulamasında PDF dosyalarından barkod okuyabilir mi?

Evet. IronBarcode'un BarcodeReader sınıfı, PDF belgelerinde gömülü barkodları aynı şekilde, ReadAsync API kullanarak çıkartabilir.

Kamera erişimi reddedildiginde PermissionException nasıl ele alırım?

try/catch bloğu içine PermissionException yakalayın ve kullanıcının cihaz ayarlarını tekrar etkinleştirebileceği AppInfo.ShowSettingsUI() çağrısını yapın.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara