IRONQRの使用

QRコードをスキャンする方法 Android(初心者向けチュートリアル)

公開済み 2024年12月16日
共有:

QRコードは、ウェブサイトや割引、重要な情報へのクイックリンクとして、最近いたるところで利用されています。 しかし、それらをスキャンする方法は、すべてのAndroidデバイスで常に同じではありません。 お使いの携帯電話の機種によっては、内蔵のカメラアプリを使用できる場合もありますし、別のカメラアプリが必要な場合もあります。QRコードスキャナー. 混乱を解消するために、AndroidスマートフォンやタブレットでQRコードを簡単にスキャンするための詳細なガイドをまとめました。 を使用してQRコードをスキャンするプログラム的な方法も探ります。IronQRライブラリ.

AndroidでQRコードをスキャンするための組み込みメソッド

Android端末には、QRコードのスキャンをサポートするネイティブ機能が搭載されていることがよくあります。 これらの組み込みメソッドは、サードパーティのアプリケーションをインストールする必要がないため、利便性と安全性を提供します。 Androidデバイスのユーザーが利用できる主な組み込みオプションについて見てみましょう。

1.Google レンズアプリ

Google Lensは、QRコードのスキャン機能を備えた強力なビジュアル分析ツールです。 このアプリケーションは、Android端末にプリインストールされていることが多く、さまざまなエントリーポイントからアクセスできます。

Google レンズへのアクセス

ユーザーは、デバイスや好みに応じて、いくつかの方法でAndroid携帯のGoogle Lensにアクセスできます。 最も一般的な方法は、Googleアプリを利用する方法です。Google Lensにアクセスする手順は次のとおりです:

  1. Googleアプリを開く

  2. 検索バーの近くにあるGoogle Lensのアイコンを探してください。

    AndroidのQRコードをスキャンする方法(初心者向けチュートリアル):図1

  3. アイコンをタップして Google レンズを起動

    既存の画像を使用することを好む人々にとって、Googleフォトはもう1つのエントリーポイントを提供します。 プロセスは以下の通りです:

  4. Googleフォトを開く

    1. QRコードを含む画像を選択

    AndroidのQRコードをスキャンする方法(初心者向けチュートリアル):図2

  5. 画面下部のGoogle Lensアイコンをタップしてください。 その後、QRコードのスキャンにGoogleレンズ機能を使用することができます。

    一部のAndroid端末、特にオペレーティングシステムの最新バージョンでは、Google Lensがネイティブのカメラアプリケーションに直接統合されています。 これらのデバイスのユーザーは、次の方法でGoogle Lensにアクセスできます:

  6. カメラアプリの起動

  7. モード」または「詳細」オプションを探す

  8. 利用可能な場合はGoogle Lensを選択

QRコードスキャンにGoogle Lensを使用

Google Lensを有効にすれば、QRコードをスキャンするプロセスは簡単です。 使い方は次の通りです:

  1. デバイスのカメラをQRコードに向けてください。

  2. Google Lensが自動的にスキャンを開始するのを待ちます。

  3. QRコードが認識されると、エンコードされた情報がポップアップで表示されます。

  4. ポップアップをタップして、リンク先のコンテンツに進むか、関連するアクションを実行してください。

2.クイック設定タイル

一部のAndroidデバイスには、QRコードスキャン用のクイック設定タイルがあり、この機能にすばやくアクセスできます。 この機能を設定して使用するには

  1. 画面上部から下にスワイプして、クイック設定パネルにアクセスします。

    AndroidのQRコードをスキャンする方法(初心者向けチュートリアル):図3

  2. 2回目の下向きスワイプで全パネルを拡大します。

    AndroidのQRコードをスキャンする方法(初心者向けチュートリアル):図4

  3. 編集機能を探してください。鉛筆のアイコンや3つの点のアイコンで表されることがよくあります。

    AndroidのQRコードをスキャンする方法(初心者向けチュートリアル):図5

  4. 編集モードで、"QRコード "または "QRスキャナー "と書かれたタイルを検索してください。

    AndroidのQRコードをスキャンする方法(初心者向けチュートリアル):図6

  1. このタイルをアクティブなクイック設定エリアにドラッグします。

  2. 変更を保存して、新しいレイアウトを確認します。

    クイック設定QRコードスキャナーを利用するには:

  3. クイック設定パネルを開きます。

  4. QRコードスキャナタイルをタップしてください。

  5. デバイスは、カメラアプリまたはGoogle Lensを利用するQRコードスキャンインターフェースを起動します。

  6. QRコードにカメラを向けてスキャンを開始します。

    これらの組み込みメソッドは、追加のソフトウェアをインストールすることなくQRコードをスキャンする効率的な方法をAndroidユーザーに提供します。 ユーザーは、デバイスのセキュリティと完全性を維持しながら、QRコードにエンコードされた情報にすばやくアクセスできます。 この他、Google Playストアを利用して、Android携帯でQRコードをスキャンするためのサードパーティアプリをダウンロードすることができます。

IronQR .NETライブラリの紹介

これまで説明した組み込みの方法は、エンドユーザーには優れたQRコードスキャン機能を提供しますが、開発者は、アプリケーション内でQRコードを作成したり操作したりするために、より堅牢なツールを必要とすることがよくあります。 そこでIronQR .NETライブラリの出番です。 Androidアプリ開発におけるQRコード機能のための強力なソリューションを提供します。

IronQRの概要

AndroidのQRコードをスキャンする方法(初心者向けチュートリアル):図7

IronQRを生成するために設計された包括的な.NETライブラリです、QRコード読み取りQRコード 主に.NET開発者を対象としていますが、Xamarinや.NET MAUIなどの.NET Frameworkを利用したAndroid開発にも活用できます。 QR機能を持つクロスプラットフォームアプリケーションに最適です。

主要機能と利点

IronQRはQRコード機能に関して多くの機能を提供しています:

  1. QRコード生成:開発者はプログラムでQRコードを作成し、サイズ、エラー訂正レベル、コンテンツなどのさまざまなパラメータを制御できます。

  2. 高度なスキャン機能:このライブラリは、厳しい条件下や画像からでもQRコードを読み取るための堅牢なアルゴリズムを提供します。

  3. カスタマイズオプション:IronQRはスキャナビリティを維持しながら、ロゴやカスタムカラーの追加など、カスタマイズされたQRコードを作成することができます。

  4. さまざまなデータ型のサポート:ライブラリは、URL、連絡先情報、カスタムテキストなど、さまざまな種類のデータをQRコードにエンコードできます。

  5. エラー処理と訂正:IronQRは高度なエラー訂正技術を実装しており、生成されたQRコードの信頼性とスキャンしやすさを保証します。

Android開発との統合

.NET環境で作業するAndroid開発者のために、IronQRをプロジェクトに統合し、サーバーサイドのQRコード生成やAndroidアプリケーションの機能拡張を提供することができます。 この統合により、標準的なAndroidライブラリでは不可能な、より複雑なQRコード操作が可能になります。

開発者は、QRコードの一括生成、高度なデコード機能、ブランディング要件に沿ったカスタムQRコードデザインなど、高度なQRコード機能を備えたAndroidアプリケーションを作成できます。 IronQR .NETライブラリは、AndroidアプリケーションのQRコード機能を標準の組み込み機能以上に拡張したい開発者にとって強力なツールとなります。

コード例

以下はIronQRを使用した.NET MAUI QRコードスキャナーアプリのデモです。 プロジェクトにIronQRライブラリをインストールした後、MauiPage.xamlコードを更新してください:

<?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="QR_Code_Business_Card.MainPage"
             Title="QR Code Reader">
    <Grid Padding="20" RowDefinitions="Auto,*" ColumnDefinitions="*,Auto,*">
        <!-- Left side -->
        <VerticalStackLayout Grid.Row="1" Grid.Column="0" Spacing="20">
            <Button x:Name="ScanQRButton" 
                    Text="Scan QR Code"
                    Clicked="OnScanQRButtonClicked"
                    HorizontalOptions="Fill"
                    BackgroundColor="#6200EE"
                    TextColor="White"
                    FontAttributes="Bold"
                    CornerRadius="10" />
            <Frame BorderColor="#E0E0E0" Padding="0" CornerRadius="10" HasShadow="True">
                <Grid>
                    <Image x:Name="SelectedImage"
                           HeightRequest="300"
                           WidthRequest="300"
                           Aspect="AspectFit" />
                    <ActivityIndicator x:Name="LoadingIndicator"
                                       IsRunning="False"
                                       IsVisible="False"
                                       Color="#6200EE"
                                       VerticalOptions="Center"
                                       HorizontalOptions="Center" />
                </Grid>
            </Frame>
        </VerticalStackLayout>
        <!-- Divider -->
        <BoxView Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" 
                 WidthRequest="1" 
                 Color="#E0E0E0" 
                 Margin="10,0" />
        <!-- Right side -->
        <VerticalStackLayout Grid.Row="1" Grid.Column="2" Spacing="20">
            <Frame BorderColor="#E0E0E0" Padding="10" CornerRadius="10" HasShadow="True">
                <Editor x:Name="ResultEditor"
                        HeightRequest="200"
                        IsReadOnly="True"
                        Placeholder="QR code content will appear here"
                        FontSize="16" />
            </Frame>
            <Button x:Name="CopyTextButton" 
                    Text="Copy Text"
                    Clicked="OnCopyTextButtonClicked"
                    HorizontalOptions="Fill"
                    BackgroundColor="#6200EE"
                    TextColor="White"
                    FontAttributes="Bold"
                    CornerRadius="10" />
        </VerticalStackLayout>
    </Grid>
</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="QR_Code_Business_Card.MainPage"
             Title="QR Code Reader">
    <Grid Padding="20" RowDefinitions="Auto,*" ColumnDefinitions="*,Auto,*">
        <!-- Left side -->
        <VerticalStackLayout Grid.Row="1" Grid.Column="0" Spacing="20">
            <Button x:Name="ScanQRButton" 
                    Text="Scan QR Code"
                    Clicked="OnScanQRButtonClicked"
                    HorizontalOptions="Fill"
                    BackgroundColor="#6200EE"
                    TextColor="White"
                    FontAttributes="Bold"
                    CornerRadius="10" />
            <Frame BorderColor="#E0E0E0" Padding="0" CornerRadius="10" HasShadow="True">
                <Grid>
                    <Image x:Name="SelectedImage"
                           HeightRequest="300"
                           WidthRequest="300"
                           Aspect="AspectFit" />
                    <ActivityIndicator x:Name="LoadingIndicator"
                                       IsRunning="False"
                                       IsVisible="False"
                                       Color="#6200EE"
                                       VerticalOptions="Center"
                                       HorizontalOptions="Center" />
                </Grid>
            </Frame>
        </VerticalStackLayout>
        <!-- Divider -->
        <BoxView Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" 
                 WidthRequest="1" 
                 Color="#E0E0E0" 
                 Margin="10,0" />
        <!-- Right side -->
        <VerticalStackLayout Grid.Row="1" Grid.Column="2" Spacing="20">
            <Frame BorderColor="#E0E0E0" Padding="10" CornerRadius="10" HasShadow="True">
                <Editor x:Name="ResultEditor"
                        HeightRequest="200"
                        IsReadOnly="True"
                        Placeholder="QR code content will appear here"
                        FontSize="16" />
            </Frame>
            <Button x:Name="CopyTextButton" 
                    Text="Copy Text"
                    Clicked="OnCopyTextButtonClicked"
                    HorizontalOptions="Fill"
                    BackgroundColor="#6200EE"
                    TextColor="White"
                    FontAttributes="Bold"
                    CornerRadius="10" />
        </VerticalStackLayout>
    </Grid>
</ContentPage>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<?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="QR_Code_Business_Card.MainPage" Title="QR Code Reader"> <Grid Padding="20" RowDefinitions="Auto,*" ColumnDefinitions="*,Auto,*"> <!-- Left side -- > <VerticalStackLayout Grid.Row="1" Grid.Column="0" Spacing="20"> <Button x:Name="ScanQRButton" Text="Scan QR Code" Clicked="OnScanQRButtonClicked" HorizontalOptions="Fill" BackgroundColor="#6200EE" TextColor="White" FontAttributes="Bold" CornerRadius="10" /> <Frame BorderColor="#E0E0E0" Padding="0" CornerRadius="10" HasShadow="True"> <Grid> <Image x:Name="SelectedImage" HeightRequest="300" WidthRequest="300" Aspect="AspectFit" /> <ActivityIndicator x:Name="LoadingIndicator" IsRunning="False" IsVisible="False" Color="#6200EE" VerticalOptions="Center" HorizontalOptions="Center" /> </Grid> </Frame> </VerticalStackLayout> <!-- Divider -- > <BoxView Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" WidthRequest="1" Color="#E0E0E0" Margin="10,0" /> <!-- Right side -- > <VerticalStackLayout Grid.Row="1" Grid.Column="2" Spacing="20"> <Frame BorderColor="#E0E0E0" Padding="10" CornerRadius="10" HasShadow="True"> <Editor x:Name="ResultEditor" HeightRequest="200" IsReadOnly="True" Placeholder="QR code content will appear here" FontSize="16" /> </Frame> <Button x:Name="CopyTextButton" Text="Copy Text" Clicked="OnCopyTextButtonClicked" HorizontalOptions="Fill" BackgroundColor="#6200EE" TextColor="White" FontAttributes="Bold" CornerRadius="10" /> </VerticalStackLayout> </Grid> </ContentPage>
VB   C#

その後、Maui.Page.xaml.csのコードを更新してください:

using IronQr;
using IronSoftware.Drawing;
namespace QR_Code_Business_Card
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            License.LicenseKey = "License-Key";
        }
        private async void OnScanQRButtonClicked(object sender, EventArgs e)
        {
            try
            {
                var result = await FilePicker.PickAsync(new PickOptions
                {
                    FileTypes = FilePickerFileType.Images,
                    PickerTitle = "Pick an image with a QR code"
                });
                if (result != null)
                {
                    string filePath = result.FullPath;
                    SelectedImage.Source = ImageSource.FromFile(filePath);
                    // Show loading indicator
                    LoadingIndicator.IsVisible = true;
                    LoadingIndicator.IsRunning = true;
                    ResultEditor.Text = "Processing QR code...";
                    // Process QR code in the background
                    await Task.Run(() =>
                    {
                        var inputBmp = AnyBitmap.FromFile(filePath);
                        QrImageInput imageInput = new QrImageInput(inputBmp);
                        QrReader reader = new QrReader();
                        IEnumerable<QrResult> results = reader.Read(imageInput);
                        MainThread.BeginInvokeOnMainThread(() =>
                        {
                            if (results.Any())
                            {
                                string scannedData = results.First().Value.ToString();
                                ResultEditor.Text = scannedData;
                            }
                            else
                            {
                                ResultEditor.Text = "No QR code found in the image.";
                            }
                            // Hide loading indicator
                            LoadingIndicator.IsVisible = false;
                            LoadingIndicator.IsRunning = false;
                        });
                    });
                }
            }
            catch (Exception ex)
            {
                ResultEditor.Text = $"An error occurred: {ex.Message}";
                LoadingIndicator.IsVisible = false;
                LoadingIndicator.IsRunning = false;
            }
        }
        private async void OnCopyTextButtonClicked(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(ResultEditor.Text))
            {
                await Clipboard.SetTextAsync(ResultEditor.Text);
                await DisplayAlert("Success", "Text copied to clipboard", "OK");
            }
            else
            {
                await DisplayAlert("Error", "No text to copy", "OK");
            }
        }
    }
}
using IronQr;
using IronSoftware.Drawing;
namespace QR_Code_Business_Card
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            License.LicenseKey = "License-Key";
        }
        private async void OnScanQRButtonClicked(object sender, EventArgs e)
        {
            try
            {
                var result = await FilePicker.PickAsync(new PickOptions
                {
                    FileTypes = FilePickerFileType.Images,
                    PickerTitle = "Pick an image with a QR code"
                });
                if (result != null)
                {
                    string filePath = result.FullPath;
                    SelectedImage.Source = ImageSource.FromFile(filePath);
                    // Show loading indicator
                    LoadingIndicator.IsVisible = true;
                    LoadingIndicator.IsRunning = true;
                    ResultEditor.Text = "Processing QR code...";
                    // Process QR code in the background
                    await Task.Run(() =>
                    {
                        var inputBmp = AnyBitmap.FromFile(filePath);
                        QrImageInput imageInput = new QrImageInput(inputBmp);
                        QrReader reader = new QrReader();
                        IEnumerable<QrResult> results = reader.Read(imageInput);
                        MainThread.BeginInvokeOnMainThread(() =>
                        {
                            if (results.Any())
                            {
                                string scannedData = results.First().Value.ToString();
                                ResultEditor.Text = scannedData;
                            }
                            else
                            {
                                ResultEditor.Text = "No QR code found in the image.";
                            }
                            // Hide loading indicator
                            LoadingIndicator.IsVisible = false;
                            LoadingIndicator.IsRunning = false;
                        });
                    });
                }
            }
            catch (Exception ex)
            {
                ResultEditor.Text = $"An error occurred: {ex.Message}";
                LoadingIndicator.IsVisible = false;
                LoadingIndicator.IsRunning = false;
            }
        }
        private async void OnCopyTextButtonClicked(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(ResultEditor.Text))
            {
                await Clipboard.SetTextAsync(ResultEditor.Text);
                await DisplayAlert("Success", "Text copied to clipboard", "OK");
            }
            else
            {
                await DisplayAlert("Error", "No text to copy", "OK");
            }
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Namespace QR_Code_Business_Card
	Partial Public Class MainPage
		Inherits ContentPage

		Public Sub New()
			InitializeComponent()
			License.LicenseKey = "License-Key"
		End Sub
		Private Async Sub OnScanQRButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
			Try
				Dim result = Await FilePicker.PickAsync(New PickOptions With {
					.FileTypes = FilePickerFileType.Images,
					.PickerTitle = "Pick an image with a QR code"
				})
				If result IsNot Nothing Then
					Dim filePath As String = result.FullPath
					SelectedImage.Source = ImageSource.FromFile(filePath)
					' Show loading indicator
					LoadingIndicator.IsVisible = True
					LoadingIndicator.IsRunning = True
					ResultEditor.Text = "Processing QR code..."
					' Process QR code in the background
					Await Task.Run(Sub()
						Dim inputBmp = AnyBitmap.FromFile(filePath)
						Dim imageInput As New QrImageInput(inputBmp)
						Dim reader As New QrReader()
						Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
						MainThread.BeginInvokeOnMainThread(Sub()
							If results.Any() Then
								Dim scannedData As String = results.First().Value.ToString()
								ResultEditor.Text = scannedData
							Else
								ResultEditor.Text = "No QR code found in the image."
							End If
							' Hide loading indicator
							LoadingIndicator.IsVisible = False
							LoadingIndicator.IsRunning = False
						End Sub)
					End Sub)
				End If
			Catch ex As Exception
				ResultEditor.Text = $"An error occurred: {ex.Message}"
				LoadingIndicator.IsVisible = False
				LoadingIndicator.IsRunning = False
			End Try
		End Sub
		Private Async Sub OnCopyTextButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
			If Not String.IsNullOrWhiteSpace(ResultEditor.Text) Then
				Await Clipboard.SetTextAsync(ResultEditor.Text)
				Await DisplayAlert("Success", "Text copied to clipboard", "OK")
			Else
				Await DisplayAlert("Error", "No text to copy", "OK")
			End If
		End Sub
	End Class
End Namespace
VB   C#

その後、アプリケーションを実行すると、次のようなUIが表示されます。 QRコードを選択すると、QRコードがスキャンされ、コピーボタンを使ってコピーできるテキストボックスに結果のテキストが表示されます。

QRコードAndroidのスキャン方法(初心者チュートリアル):図8

結論

QRコードAndroidのスキャン方法(初心者チュートリアル):図9

Android端末でのQRコードの読み取りは、Googleレンズやクイック設定タイルなどの内蔵機能で簡単に行えます。 これらのネイティブメソッドは、追加アプリを必要とせず、QRコード情報への迅速かつ安全なアクセスをユーザーに提供します。

高度なQRコード機能をアプリケーションに組み込むことを目指す開発者にとって、IronQR .NETライブラリは強力なソリューションを提供します。 カスタムQRコード生成、高度なスキャン機能、広範なカスタマイズオプションが可能です。 IronQRは無料試用開発者がその機能を探索できるようにするため、ライセンスは $749 から始まり、AndroidアプリケーションにおけるプロフェッショナルグレードのQRコード統合にとって価値のある投資となります。

次へ >
名刺用QRコードジェネレーター(初心者ガイド)

準備はできましたか? バージョン: 2024.12 新発売

無料のNuGetダウンロード 総ダウンロード数: 24,465 ライセンスを表示 >