如何使用 .NET MAUI 進行二維碼掃描
隨著行動應用利用二維碼快速獲取資訊的興起,對高效易整合的二維碼掃描器以及用於掃描條碼的.NET MAUI 條碼掃描器的需求日益增長。 .NET MAUI(多平台應用程式使用者介面)是微軟的跨平台框架,為建構跨 iOS、Android、macOS 和 Windows 平台的應用程式提供了一個統一的環境。 在 .NET MAUI 應用程式中掃描二維碼時,開發人員需要一個直覺且功能強大的程式庫來管理流程。
IronQR是一個受歡迎的庫,它允許開發人員快速、準確、可靠地產生和解碼二維碼。 本文將引導您完成將 IronQR 與 .NET MAUI 集成,以建立一個可以在多個平台上無縫工作的二維碼/條碼掃描器。
如何使用 IronQR 實現二維碼掃描
- 建立一個 .NET MAUI 專案。
- 安裝 IronQR NuGet 套件。
- 設定相機和檔案儲存權限。
- 實作二維碼掃描器。
IronQR for .NET MAUI 行動應用程式簡介
IronQR 是一個功能強大、易於使用的函式庫,可簡化 .NET 應用程式(包括 .NET MAUI 行動應用程式)中二維碼的產生和解碼,實現二維碼和條碼掃描功能。 它為跨平台(如 iOS、Android、macOS 和 Windows)整合二維碼和條碼掃描功能提供了快速可靠的解決方案,這對於建立跨平台行動應用程式至關重要。
IronQR for .NET MAUI 行動應用的功能
-跨平台支援:可在 MAUI 應用程式中無縫運行於 iOS、Android、macOS 和 Windows 平台。 -二維碼掃描:高效率解碼各種類型的二維碼(網址、文字、聯絡資訊等)。 它還支援使用高效的條碼檢測演算法讀取多個條碼。 -二維碼產生:此功能可以輕鬆地從 URL、文字等資料產生二維碼。 -相機權限處理:自動處理相機權限請求,簡化掃描過程。 -高效能:快速可靠地掃描和產生二維碼,資源佔用極低。 -可自訂設定:提供掃描參數和二維碼外觀的自訂選項。 -輕鬆整合:只需簡單的 API 和最少的設置,即可將二維碼掃描和生成功能添加到您的 .NET MAUI 應用程式中。 -錯誤處理:提供詳細的錯誤訊息和故障排除,確保在各種情況下都能流暢運作。 -無外部相依性: IronQR 獨立運行,減少了對第三方程式庫或複雜配置的需求,這與 ZXing 條碼掃描器不同。 -多格式支援:支援多種二維碼格式,確保與現實世界中使用的各種二維碼相容。
先決條件
在開始實施之前,請確保您已具備以下先決條件:
- 已安裝Visual Studio 2022 或更高版本。
- .NET 6.0 SDK 或更高版本(因為 .NET MAUI 是基於 .NET 6 及更高版本構建的)。
- IronQR NuGet 包,用於二維碼掃描和條碼檢測。
- .NET MAUI 應用程式(如果您還沒有 MAUI 應用程序,可以在 Visual Studio 中建立一個新的 MAUI 應用程式)。
步驟 1:建立一個 .NET MAUI 項目
首先,我們建立一個簡單的.NET MAUI專案:
步驟 2:安裝 IronQR NuGet 套件
IronQR 是一個提供二維碼產生和掃描功能的第三方函式庫。 要安裝 IronQR,您需要透過 NuGet 添加它:
- 在 Visual Studio 中,以滑鼠右鍵按一下解決方案資源管理器中的"依賴項" 。
- 按一下"管理 NuGet 套件" 。
- 在"瀏覽"標籤中,搜尋 IronQR,然後按一下相關軟體包上的"安裝" (通常是 IronQR 或 IronQR.Maui,如果專門用於 MAUI)。
接受所有許可協議,並確保庫已安裝。
! IronQR
步驟 3:設定相機和檔案儲存權限
要讓您的應用程式能夠掃描二維碼,您需要在行動平台(iOS 和 Android)上請求相機權限。 以下是如何新增以下權限的方法。
安卓
在AndroidManifest.xml檔案中新增相機權限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" /><uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />iOS
在Info.plist檔案中新增相機使用說明:
<key>NSCameraUsageDescription</key>
<string>We need access to your camera to scan QR codes</string><key>NSCameraUsageDescription</key>
<string>We need access to your camera to scan QR codes</string>第四步:實現二維碼掃描器
現在,讓我們在 MAUI 條碼掃描器應用程式中為二維碼掃描器建立一個簡單的使用者介面。我們將使用按鈕來觸發掃描過程,並使用標籤來顯示掃描到的二維碼文字。
編輯 XML 命名空間中的MainPage.xaml檔案。
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MauiQRCodeScanner.MainPage">
<StackLayout Padding="20" VerticalOptions="Center">
<Button x:Name="scanButton" Text="Scan QR Code" Clicked="OnScanButtonClicked" />
<Label x:Name="resultLabel" Text="Scan Result will appear here" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
</StackLayout>
</ContentPage><ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MauiQRCodeScanner.MainPage">
<StackLayout Padding="20" VerticalOptions="Center">
<Button x:Name="scanButton" Text="Scan QR Code" Clicked="OnScanButtonClicked" />
<Label x:Name="resultLabel" Text="Scan Result will appear here" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
</StackLayout>
</ContentPage>現在,在MainPage.xaml.cs中,您將處理相機權限和二維碼掃描邏輯。 以下是具體實作方法:
using IronQrCode;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Essentials;
namespace MauiQRCodeScanner
{
public partial class MainPage : ContentPage
{
public MainPage()
{
License.LicenseKey = "Your key"; // Add your IronQR license key here
InitializeComponent();
}
// OnScanButtonClicked method with object sender as input
private async void OnScanButtonClicked(object sender, EventArgs e)
{
// Check for camera permission
var status = await Permissions.RequestAsync<Permissions.Camera>();
if (status != PermissionStatus.Granted)
{
await DisplayAlert("Permission Denied", "Cannot scan QR codes without camera permission", "OK");
return;
}
// Start scanning QR codes
try
{
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);
if (results.Any())
{
resultLabel.Text = "Scanned Text: " + results.First().Value;
// Display the result
}
else
{
resultLabel.Text = "No QR code detected";
}
}
catch (Exception ex)
{
resultLabel.Text = "Error: " + ex.Message;
}
}
}
}using IronQrCode;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Essentials;
namespace MauiQRCodeScanner
{
public partial class MainPage : ContentPage
{
public MainPage()
{
License.LicenseKey = "Your key"; // Add your IronQR license key here
InitializeComponent();
}
// OnScanButtonClicked method with object sender as input
private async void OnScanButtonClicked(object sender, EventArgs e)
{
// Check for camera permission
var status = await Permissions.RequestAsync<Permissions.Camera>();
if (status != PermissionStatus.Granted)
{
await DisplayAlert("Permission Denied", "Cannot scan QR codes without camera permission", "OK");
return;
}
// Start scanning QR codes
try
{
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);
if (results.Any())
{
resultLabel.Text = "Scanned Text: " + results.First().Value;
// Display the result
}
else
{
resultLabel.Text = "No QR code detected";
}
}
catch (Exception ex)
{
resultLabel.Text = "Error: " + ex.Message;
}
}
}
}程式碼解釋
-權限:我們使用Permissions.RequestAsync<Permissions.Camera> ()請求相機權限。 Permissions.RequestAsync<Permissions.Camera> () 。 如果權限被拒絕,則會向使用者顯示警告。
- IronQR 掃描器:使用 IronQR 庫物件和方法來掃描二維碼。
QrReader.Read()方法嘗試解碼二維碼,並將結果顯示在標籤上。
輸入二維碼
! QR 圖碼輸入
輸出
! QR 圖碼輸出
選擇所需的二維碼或從相機畫面中捕捉二維碼。
! 選擇二維碼
結果在使用者介面中顯示如下。
IronQR 授權(提供試用版)
IronQR 透過行動應用程式程式碼中的許可證金鑰來運作。 開發者可以輕鬆地從許可證頁面取得試用許可證。 在使用 IronQR 庫之前,請將許可證資訊如下新增至程式碼。
License.LicenseKey = "Your License";License.LicenseKey = "Your License";結論
在本文中,我們逐步介紹如何使用 IronQR 在 .NET MAUI 應用程式中建立二維碼掃描器。 我們首先建立了一個 .NET MAUI 應用程序,安裝了 IronQR 包,並實作了 UI 和掃描邏輯。 IronQR 讓 .NET MAUI 應用程式中的二維碼掃描變得極為簡單且有效率。
IronQR 庫的設計目標是跨平台的,確保使用 .NET MAUI 建立的應用程式可以在所有目標裝置上(無論是智慧型手機、平板電腦還是桌上型電腦系統)一致地存取二維碼功能。 IronQR 還支援自動相機權限處理等功能,讓整合式二維碼掃描變得更加容易,無需手動管理權限。
簡而言之,IronQR for .NET MAUI 使開發人員能夠在行動應用程式中快速實現二維碼掃描和生成功能,從而簡化開發並改善所有平台上的使用者體驗。
常見問題解答
如何在.NET MAUI應用程式中整合二維碼掃描器?
若要在 .NET MAUI 應用程式中整合二維碼掃描器,可以透過 NuGet 安裝 IronQR 庫,並使用QrReader.Read()解碼二維碼。
如何建立一個用於二維碼掃描的.NET MAUI專案?
首先開啟 Visual Studio,使用 .NET MAUI 應用程式範本建立一個新項目,並選擇所需的 .NET 版本。然後,安裝 IronQR 庫以實現二維碼掃描功能。
在 .NET MAUI 應用程式中,QR 掃描需要哪些權限?
二維碼掃描需要相機權限。在 Android 系統上,請在AndroidManifest.xml中新增必要的權限;在 iOS 系統上,請在Info.plist檔案中新增相機使用說明。
如何在.NET MAUI應用程式中管理相機權限?
使用Permissions.RequestAsync<Permissions.Camera>()請求相機權限。如果權限被拒絕,則顯示警告訊息通知使用者。
使用 IronQR 庫進行 QR 掃描有哪些好處?
IronQR 提供跨平台支援、高效能、可自訂設定、自動相機權限處理和多格式支持,使其成為 .NET MAUI 應用程式的理想選擇。
如何排查我的 .NET MAUI 應用程式中的二維碼掃描問題?
請確保 IronQR 庫已正確安裝,已授予相機權限,且設備相機功能正常。使用 try-catch 區塊檢查程式碼中是否有任何錯誤。
使用 .NET MAUI 和 QR 掃描進行開發需要哪些條件?
您需要 Visual Studio 2022 或更高版本、.NET 6.0 SDK 或更高版本,以及 IronQR NuGet 套件,以便進行二維碼掃描和條碼檢測。
如何取得二維碼庫的試用許可證?
請造訪 IronQR 許可頁面以取得試用許可金鑰。使用 IronQR 功能前,請將許可證金鑰插入您的程式碼中。
IronQR庫支援哪些QR碼掃描格式?
IronQR 支援多種二維碼和條碼格式,確保其可在不同的應用程式和平台上使用。
如何在.NET應用程式中產生二維碼?
使用 IronQR 庫的方法可以有效地產生二維碼,並允許您根據應用程式的需求自訂設定。









