Skaner kodów QR .NET MAUI
Wprowadzenie
.NET MAUI (.NET Multi-platform App UI) to multiplatformowy framework do tworzenia natywnych aplikacji mobilnych i desktopowych z jednego kodu źródłowego w C#. Jeden projekt może celować w Androida, iOS, macOS i Windows, udostępniając układy interfejsu użytkownika i logikę biznesową na wszystkich platformach. Integracja MAUI z ekosystemem .NET oznacza, że programiści mogą dotrzeć do użytkowników mobilnych bez rezygnacji z znanych narzędzi lub języków.
W tym artykułe wyjaśnimy, jak zbudować natywny skaner kodów QR w aplikacji .NET MAUI, używając IronQR do dekodowania kodów QR wybranych z biblioteki zdjęć urządzenia.
Jak zbudować skaner kodów QR w .NET MAUI
- Zainstaluj bibliotekę C# IronQR, aby skanować kody QR na urządzeniach mobilnych
- Zaprojektuj układ aplikacji w
MainPage.xaml - Użyj
FilePicker, aby umożliwić użytkownikowi wybranie obrazu kodu QR z urządzenia - Zaladuj obraz i owin go w
QrImageInput - Wywołaj
Readi wyświetl zdekodowaną wartość wLabel
IronQR: C# Biblioteka kodów QR
Aby odczytywać kody QR w aplikacji, użyjemy biblioteki IronQR dla .NET. Zapewnia ona prosty API do wykrywania i dekodowania kodów QR z dowolnego źródła obrazów, w tym plików wybranych na urządzeniu mobilnym. IronQR działa na wszystkich platformach docelowych MAUI i nie wymaga wiedzy domenowej o kodach kreskowych do integracji.
IronQR może dekodować standardowe kody QR, Micro QR i kody rMQR, przyjmując wejście obrazów jako pliki, strumienie lub bitmapy. Można ją zainstalować w kilka sekund za pomocą Menedżera pakietów NuGet.
Kroki budowy skanera kodów QR w .NET MAUI
Postępuj według tych kroków, aby dodać skanowanie kodu QR do aplikacji .NET MAUI.
Wymagania wstępne
- Visual Studio 2022 z zainstalowanym środowiskiem pracy .NET MAUI
- Projekt .NET MAUI celujący w Androida lub iOS
Zainstaluj IronQR
Zainstaluj bibliotekę IronQR za pomocą NuGet Package Manager Console w Visual Studio. Przejdź do Tools > NuGet Package Manager > Package Manager Console i uruchom:
Install-Package IronQR
Alternatywnie, wyszukaj IronQR w NuGet i zainstaluj najnowszą wersję.
Projektowanie front-endu
Interfejs użytkownika skanera składa się z przycisku do wyzwalania wyboru obrazu, widoku obrazu do podglądu wybranego kodu QR oraz etykiety do wyświetlania zdekodowanego wyniku.
Zastąp treść MainPage.xaml następującym tekstem:
<?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>
Przykładowe dane wejściowe
Użyj poniższego kodu QR jako obrazu testowego. Zapisz to na swoim urządzeniu, a następnie wybierz przez selektor plików aplikacji. Wynik dekodowania powinien wyglądać następująco: https://ironsoftware.com.
Przykładowy kod QR — koduje https://ironsoftware.com
Skanowanie kodów QR za pomocą IronQR
Po naciśnięciu przycisku skanowania FilePicker otwiera bibliotekę obrazów urządzenia. Po wybraniu zdjęcia przez użytkownika pełna ścieżka jest ładowana do AnyBitmap, która jest przekazywana do QrReader.Read(). Zdekodowana wartość z pierwszego wykrytego kodu QR jest wyświetlana w etykiecie wyników.
Dodaj następującą metodę do 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 jest dostarczany przez warstwę abstrakcji platformy MAUI i działa na systemach Android, iOS oraz Windows bez konieczności stosowania kodu specyficznego dla danej platformy. AnyBitmap.FromFile obsługuje dekodowanie obrazów, a QrReader.Read zwraca IEnumerable<QrResult> z jednym wpisem na każdy kod QR znaleziony na obrazie.
Wynik
Wybranie obrazu kodu QR wyzwala skanowanie. Zdekodowana wartość pojawia się w etykiecie wyników poniżej podglądu obrazu.
Kod QR wybrany, a zdekodowana wartość wyświetlona w etykiecie wyniku
Pobierz projekt
Wnioski
W tym artykułe pokazaliśmy, jak zbudować natywny skaner kodów QR w aplikacji .NET MAUI, używając IronQR. Interfejs API FilePicker zapewnia natywny dla platformy wybór obrazów w systemach Android, iOS i Windows, natomiast QrReader.Read firmy IronQR obsługuje dekodowanie w ramach jednego wywołania. To samo podejście można zastosować do wielu kodów QR na jednym obrazie, iterując przez pełny zbiór wyników zamiast wywoływać .First().
IronQR wymaga licencji do użytku w środowisku deweloperskim i komercyjnym. Szczegóły licencji dostępne tutaj.
Aby szczegółowo przyjrzeć się odczytywaniu właściwości kodu QR poza wartością, zobacz przewodniki Read QR Code Value i Read QR Code Type.
Często Zadawane Pytania
O czym jest Samouczek skanera QR kodow .NET MAUI?
Samouczek skanera QR kodow .NET MAUI dostarcza wskazowek dotyczących budowania skanera kodow QR z uzyciem IronQR, z instrukcjami dostosowanymi do aplikacji .NET MAUI na platformach Android, iOS i Windows.
Ktore platformy sa obslugiwane przez skaner kodow QR .NET MAUI?
Skaner kodow QR .NET MAUI obsluguje platformy Android, iOS i Windows, pozwalajac programistom na tworzenie aplikacji wieloplatformowych z uzyciem IronQR.
Jak moge wybrac obrazy do skanowania kodow QR w aplikacji .NET MAUI?
Mozesz uzyc komponentu FilePicker w aplikacji .NET MAUI, aby wybrac obrazy, ktore nastepnie moga byc przetwarzane przez metode QrReader.Read() IronQR do dekodowania kodow QR.
Jaka funkcja jest uzywana do dekodowania kodow QR w samouczku?
W samouczku do dekodowania kodow QR z wybranych obrazow w aplikacji .NET MAUI uzywana jest funkcja QrReader.Read() z IronQR.
Czy moge uzyc IronQR do skanowania kodow QR w aplikacji multiplatformowej?
Tak, IronQR jest zaprojektowane do uzytku w aplikacjach multiplatformowych, a za pomoca frameworka .NET MAUI mozesz tworzyc skanery kodow QR dla platform Android, iOS i Windows.
Czy istnieje specyficzna funkcja czytnika kodow QR dla .NET MAUI?
Tak, samouczek pokazuje, jak uzywac funkcji QrReader.Read() z IronQR w aplikacji .NET MAUI do odczytu i dekodowania kodow QR.
Czy IronQR obsluguje skanowanie kodow QR na urzadzeniach mobilnych?
IronQR obsluguje skanowanie kodow QR na urzadzeniach mobilnych, w tym Android i iOS, co jest widoczne w Samouczku skanera kodow QR .NET MAUI.
Jaka jest rola FilePicker w procesie skanowania kodow QR?
FilePicker sluzy do wyboru obrazow z pamieci urzadzenia, ktore nastepnie sa przekazywane do QrReader.Read() IronQR w aplikacji .NET MAUI do dekodowania kodow QR.
Czy jest mozliwe zintegrowanie skanera kodow QR z aplikacja Windows uzywajac .NET MAUI?
Tak, Samouczek skanera kodow QR .NET MAUI pokazuje, jak zintegrowac skaner kodow QR z aplikacja Windows uzywajac IronQR.

