ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
QRコードは、ウェブサイトや割引、重要な情報へのクイックリンクとして、最近いたるところで利用されています。 しかし、それらをスキャンする方法は、すべてのAndroidデバイスで常に同じではありません。 お使いの携帯電話の機種によっては、内蔵のカメラアプリを使用できる場合もありますし、別のカメラアプリが必要な場合もあります。QRコードスキャナー. 混乱を解消するために、AndroidスマートフォンやタブレットでQRコードを簡単にスキャンするための詳細なガイドをまとめました。 を使用してQRコードをスキャンするプログラム的な方法も探ります。IronQRライブラリ.
Android端末には、QRコードのスキャンをサポートするネイティブ機能が搭載されていることがよくあります。 これらの組み込みメソッドは、サードパーティのアプリケーションをインストールする必要がないため、利便性と安全性を提供します。 Androidデバイスのユーザーが利用できる主な組み込みオプションについて見てみましょう。
Google Lensは、QRコードのスキャン機能を備えた強力なビジュアル分析ツールです。 このアプリケーションは、Android端末にプリインストールされていることが多く、さまざまなエントリーポイントからアクセスできます。
ユーザーは、デバイスや好みに応じて、いくつかの方法でAndroid携帯のGoogle Lensにアクセスできます。 最も一般的な方法は、Googleアプリを利用する方法です。Google Lensにアクセスする手順は次のとおりです:
Googleアプリを開く
検索バーの近くにあるGoogle Lensのアイコンを探してください。
アイコンをタップして Google レンズを起動
既存の画像を使用することを好む人々にとって、Googleフォトはもう1つのエントリーポイントを提供します。 プロセスは以下の通りです:
Googleフォトを開く
画面下部のGoogle Lensアイコンをタップしてください。 その後、QRコードのスキャンにGoogleレンズ機能を使用することができます。
一部のAndroid端末、特にオペレーティングシステムの最新バージョンでは、Google Lensがネイティブのカメラアプリケーションに直接統合されています。 これらのデバイスのユーザーは、次の方法でGoogle Lensにアクセスできます:
カメラアプリの起動
モード」または「詳細」オプションを探す
Google Lensを有効にすれば、QRコードをスキャンするプロセスは簡単です。 使い方は次の通りです:
デバイスのカメラをQRコードに向けてください。
Google Lensが自動的にスキャンを開始するのを待ちます。
QRコードが認識されると、エンコードされた情報がポップアップで表示されます。
一部のAndroidデバイスには、QRコードスキャン用のクイック設定タイルがあり、この機能にすばやくアクセスできます。 この機能を設定して使用するには
画面上部から下にスワイプして、クイック設定パネルにアクセスします。
2回目の下向きスワイプで全パネルを拡大します。
編集機能を探してください。鉛筆のアイコンや3つの点のアイコンで表されることがよくあります。
編集モードで、"QRコード "または "QRスキャナー "と書かれたタイルを検索してください。
このタイルをアクティブなクイック設定エリアにドラッグします。
変更を保存して、新しいレイアウトを確認します。
クイック設定QRコードスキャナーを利用するには:
クイック設定パネルを開きます。
QRコードスキャナタイルをタップしてください。
デバイスは、カメラアプリまたはGoogle Lensを利用するQRコードスキャンインターフェースを起動します。
QRコードにカメラを向けてスキャンを開始します。
これらの組み込みメソッドは、追加のソフトウェアをインストールすることなくQRコードをスキャンする効率的な方法をAndroidユーザーに提供します。 ユーザーは、デバイスのセキュリティと完全性を維持しながら、QRコードにエンコードされた情報にすばやくアクセスできます。 この他、Google Playストアを利用して、Android携帯でQRコードをスキャンするためのサードパーティアプリをダウンロードすることができます。
これまで説明した組み込みの方法は、エンドユーザーには優れたQRコードスキャン機能を提供しますが、開発者は、アプリケーション内でQRコードを作成したり操作したりするために、より堅牢なツールを必要とすることがよくあります。 そこでIronQR .NETライブラリの出番です。 Androidアプリ開発におけるQRコード機能のための強力なソリューションを提供します。
IronQRを生成するために設計された包括的な.NETライブラリです、QRコード読み取りQRコード 主に.NET開発者を対象としていますが、Xamarinや.NET MAUIなどの.NET Frameworkを利用したAndroid開発にも活用できます。 QR機能を持つクロスプラットフォームアプリケーションに最適です。
IronQRはQRコード機能に関して多くの機能を提供しています:
QRコード生成:開発者はプログラムでQRコードを作成し、サイズ、エラー訂正レベル、コンテンツなどのさまざまなパラメータを制御できます。
高度なスキャン機能:このライブラリは、厳しい条件下や画像からでもQRコードを読み取るための堅牢なアルゴリズムを提供します。
カスタマイズオプション:IronQRはスキャナビリティを維持しながら、ロゴやカスタムカラーの追加など、カスタマイズされたQRコードを作成することができます。
さまざまなデータ型のサポート:ライブラリは、URL、連絡先情報、カスタムテキストなど、さまざまな種類のデータをQRコードにエンコードできます。
.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>
その後、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
その後、アプリケーションを実行すると、次のようなUIが表示されます。 QRコードを選択すると、QRコードがスキャンされ、コピーボタンを使ってコピーできるテキストボックスに結果のテキストが表示されます。
Android端末でのQRコードの読み取りは、Googleレンズやクイック設定タイルなどの内蔵機能で簡単に行えます。 これらのネイティブメソッドは、追加アプリを必要とせず、QRコード情報への迅速かつ安全なアクセスをユーザーに提供します。
高度なQRコード機能をアプリケーションに組み込むことを目指す開発者にとって、IronQR .NETライブラリは強力なソリューションを提供します。 カスタムQRコード生成、高度なスキャン機能、広範なカスタマイズオプションが可能です。 IronQRは無料試用開発者がその機能を探索できるようにするため、ライセンスは $749 から始まり、AndroidアプリケーションにおけるプロフェッショナルグレードのQRコード統合にとって価値のある投資となります。
9つの .NET API製品 オフィス文書用