フッターコンテンツにスキップ
IRONQRの使用

QRコードスキャナーのために.NET MAUIを使用する方法

QRコードを活用したモバイルアプリケーションの普及に伴い、効率的で統合しやすいQRコードスキャナーと、バーコードをスキャンするための.NET MAUIバーコードスキャナーの必要性が高まっています。.NET MAUI(マルチプラットフォームアプリUI)、Microsoftのクロスプラットフォームフレームワークにより、iOS、Android、macOS、およびWindows向けのアプリケーションを構築するための統一された環境が提供されます。 .NET MAUIアプリケーションでQRコードをスキャンする際、開発者にはプロセスを管理する直感的で強力なライブラリが必要です。

IronQRは、開発者がQRコードを迅速かつ正確に生成およびデコードできる人気のライブラリです。 この記事では、IronQRを.NET MAUIと統合し、複数のプラットフォームでシームレスに動作するQR/Barcodeスキャナーを構築する方法を説明します。

IronQRを使用したQR Barcodeスキャニングの実装方法

  1. .NET MAUIプロジェクトを作成します。
  2. IronQR NuGetパッケージをインストールします。
  3. カメラとファイルストレージの権限を設定します。
  4. QRコードスキャナーを実装します。

IronQR for .NET MAUI Mobile Appsの概要

IronQRは強力で使いやすいライブラリで.NETアプリケーションにおけるQRコードの生成とデコードを簡素化し、QRとBarcodeスキャニング機能を含む.NET MAUIモバイルアプリに貢献します。 これは、iOS、Android、macOS、そしてWindowsといったプラットフォームにわたるQRコードおよびBarcodeスキャニング機能の統合に迅速かつ信頼性の高いソリューションを提供します。これはクロスプラットフォームのモバイルアプリ構築に不可欠です。

IronQR for .NET MAUI Mobile Appsの特徴

  • クロスプラットフォームサポート: MAUIアプリ内でiOS、Android、macOS、およびWindowsプラットフォームにシームレスに対応。
  • QRコードスキャニング: URL、テキスト、連絡先情報など様々な種類のQRコードを効率的にデコード。 効率的なバーコード検出アルゴリズムで複数のバーコードも対応。
  • QRコード生成: URL、テキストなどのデータから簡単にQRコードを生成。
  • カメラ権限の処理: カメラ権限の要求を自動で処理し、スキャンプロセスを簡素化。
  • 高パフォーマンス: 最小限のリソース使用で素早く、信頼性の高いQRコードのスキャニングと生成。
  • カスタマイズ可能な設定: スキャンパラメータやQRコードの外観のカスタマイズオプションを提供。
  • 簡単な統合: QRコードのスキャニングと生成を.NET MAUIアプリに追加するためにシンプルなAPIと最小限のセットアップが必要。
  • エラーハンドリング: 詳細なエラーメッセージとトラブルシューティングを提供し、様々なシナリオでスムーズな機能を保証。
  • 外部依存なし: IronQRは独立して動作し、ZXing Barcodeスキャナーとは異なり、サードパーティライブラリや複雑な設定が不要。
  • マルチフォーマット対応: 現実世界で使用されるさまざまなQRコードと互換性がある複数のQRコードフォーマットをサポート。

前提条件

実装を進める前に、次の前提条件を確認してください:

  1. Visual Studio 2022以降 をインストール。
  2. .NET 6.0 SDK以降 (.NET MAUIは.NET 6およびそれ以降のバージョンをベースに構築されているため)。
  3. IronQR NuGet Package QRコードスキャニングとバーコード検出のため。
  4. .NET MAUIアプリ (まだお持ちでない場合、Visual Studioで新しいMAUIアプリを作成できます)。

ステップ1: .NET MAUIプロジェクトを作成する

まず、シンプルな.NET MAUIプロジェクトを作成しましょう。

  1. Visual Studioを開き、Create a new projectをクリック。
  2. .NET MAUI Appテンプレートを選択。

新規プロジェクト

  1. プロジェクト名を入力 (例: MauiQRCodeScanner)、場所を選択し次へ

プロジェクト構成

必要な.NETバージョンを選択し、作成をクリック。

ターゲットフレームワーク

ステップ2: IronQR NuGetパッケージをインストールする

IronQRはQRコード生成とスキャニング機能を提供するサードパーティライブラリです。 IronQRをインストールするには、NuGetを通じて追加する必要があります。

  1. Visual Studioで、Dependencies内を右クリック。
  2. Manage NuGet Packagesをクリック。
  3. BrowseタブでIronQRを検索し、関連するパッケージ (通常はIronQRまたはIronQR.Maui) をインストールクリック。
  4. ライセンスを承諾し、ライブラリがインストールされていることを確認。

    IronQR

ステップ3: カメラとファイルストレージの権限を設定する

アプリケーションがQRコードをスキャンするためには、モバイルプラットフォーム (iOSとAndroid) でカメラの権限を要求する必要があります。 次の権限を追加する方法をご紹介します。

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" />
XML

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>
XML

ステップ4: QRコードスキャナーを実装する

では、MAUI Barcodeスキャナーアプリ内でQRスキャナー用のシンプルなUIを作成しましょう。スキャンプロセスをトリガーするためにボタンを使用し、スキャンしたQRコードのテキストを表示するためのラベルを使用します。

MainPage.xamlファイルをXML名前空間で編集。

<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>
XML

MainPage.xaml.csでは、カメラの権限とQRコードスキャニングのロジックを扱います。 実装方法は以下の通りです。

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;
        }
        }
    }
}
Imports IronQrCode
Imports Microsoft.Maui.Controls
Imports Microsoft.Maui.Essentials

Namespace MauiQRCodeScanner
	Partial Public Class MainPage
		Inherits ContentPage

		Public Sub New()
			License.LicenseKey = "Your key" ' Add your IronQR license key here
			InitializeComponent()
		End Sub

		' OnScanButtonClicked method with object sender as input
		Private Async Sub OnScanButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
			' Check for camera permission
			Dim status = Await Permissions.RequestAsync(Of Permissions.Camera)()
			If status <> PermissionStatus.Granted Then
				Await DisplayAlert("Permission Denied", "Cannot scan QR codes without camera permission", "OK")
				Return
			End If

			' Start scanning QR codes
			Try
				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)

				If results.Any() Then
					resultLabel.Text = "Scanned Text: " & results.First().Value
		' Display the result
				Else
					resultLabel.Text = "No QR code detected"
				End If
		Catch ex As Exception
			resultLabel.Text = "Error: " & ex.Message
		End Try
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

コードの説明

  • 権限: Permissions.RequestAsync<Permissions.Camera>()を使用してカメラの権限を要求。 権限が拒否された場合、ユーザーにアラートが表示されます。
  • IronQRスキャナー: IronQRライブラリのオブジェクトとメソッドを使用してQRコードをスキャン。 QrReader.Read()メソッドでQRコードのデコードを試み、その結果をラベルに表示。

入力QRコード

QRコード入力

出力

QRコード出力

必要なQRコードを選択するか、カメラフィードからキャプチャ。

QRコードを選択

結果がUIに以下のように表示されます。

QRコードUI出力

IronQRライセンス (トライアル利用可能)

IronQRはモバイルアプリコードでライセンスキーとともに動作します。 開発者はライセンスページからトライアルライセンスを簡単に取得できます。 IronQRライブラリを使用する前に、そのコード内のどこかにライセンスを配置してください。

License.LicenseKey = "Your License";
License.LicenseKey = "Your License";
License.LicenseKey = "Your License"
$vbLabelText   $csharpLabel

結論

この記事では、IronQRを使用して.NET MAUIアプリケーション内でQRコードスキャナーを構築するプロセスを説明しました。 .NET MAUIアプリの設定を始め、IronQRパッケージをインストールし、UIとスキャニングのロジックを実装しました。 IronQRによって.NET MAUIアプリ内でのQRコードスキャニングが非常に簡単かつ効果的になりました。

IronQRライブラリはクロスプラットフォームとして設計されており、.NET MAUIと共に構築されたアプリがスマートフォン、タブレット、またはデスクトップシステムであろうと、すべてのターゲットデバイスでQRコード機能に一貫してアクセスできるようにします。 また、IronQRは自動カメラ許可処理のような機能にも対応しており、手動での許可管理の煩わしさなしにQRコードスキャニングを統合しやすくしています。

つまり、IronQR for .NET MAUIは開発者がモバイルアプリにQRコードスキャニングと生成機能を迅速に実装することを可能にし、すべてのプラットフォームでのユーザーエクスペリエンスを向上させるとともに、開発プロセスを簡略化し効率化します。

よくある質問

.NET MAUIアプリケーションにQRコードスキャナを統合するにはどうすればよいですか?

QRコードスキャナを.NET MAUIアプリに統合するには、NuGetを介してIronQRライブラリをインストールし、QrReader.Read()を使用してQRコードをデコードします。

QRスキャニング用に.NET MAUIプロジェクトを作成する手順は何ですか?

Visual Studioを開き、.NET MAUI Appテンプレートを使用して新しいプロジェクトを作成し、必要な.NETバージョンを選択します。その後、QRスキャニングを実装するためにIronQRライブラリをインストールします。

.NET MAUIアプリでQRスキャニングに必要な権限はどれですか?

QRスキャニングにはカメラの権限が必要です。AndroidではAndroidManifest.xmlに、iOSではInfo.plistにカメラ使用の説明を追加してください。

.NET MAUIアプリでカメラの権限を管理するにはどうすればいいですか?

カメラの権限をリクエストするためにPermissions.RequestAsync<Permissions.Camera>()を使用します。拒否された場合はユーザーに通知するアラートを表示して処理します。

QRスキャニングにIronQRライブラリを使用する利点は何ですか?

IronQRはクロスプラットフォームのサポート、高パフォーマンス、カスタマイズ可能な設定、自動カメラ権限の処理、マルチフォーマットのサポートを提供し、.NET MAUIアプリに最適です。

.NET MAUIアプリでQRコードスキャンの問題を解決するにはどうすればいいですか?

IronQRライブラリが正しくインストールされていること、カメラの権限が与えられていること、そしてデバイスのカメラが機能していることを確認してください。try-catchブロックを使用してコードのエラーをチェックします。

.NET MAUIとQRスキャニングで開発を始めるために何が必要ですか?

Visual Studio 2022以降、.NET 6.0 SDK以降、そしてQRコードスキャンとバーコード検出を促進するためのIronQR NuGetパッケージが必要です。

QRコードライブラリの試用ライセンスを取得するにはどうすればよいですか?

IronQRのライセンスページにアクセスして試用ライセンスキーを取得します。IronQRの機能を利用する前にコードにライセンスキーを挿入してください。

QRスキャニングにIronQRライブラリがサポートするフォーマットは何ですか?

IronQRは複数のQRコードおよびバーコードフォーマットをサポートしており、異なるアプリケーションやプラットフォーム間で使用できます。

.NETアプリケーションでQRコードを生成するにはどうすればいいですか?

IronQRライブラリのメソッドを使用して、アプリケーションのニーズに合わせて設定をカスタマイズしながらQRコードを効率的に生成します。

Jordi Bardia
ソフトウェアエンジニア
Jordiは、最も得意な言語がPython、C#、C++であり、Iron Softwareでそのスキルを発揮していない時は、ゲームプログラミングをしています。製品テスト、製品開発、研究の責任を分担し、Jordiは継続的な製品改善において多大な価値を追加しています。この多様な経験は彼を挑戦させ続け、興味を持たせており、Iron Softwareで働くことの好きな側面の一つだと言います。Jordiはフロリダ州マイアミで育ち、フロリダ大学でコンピュータサイエンスと統計学を学びました。