使用 IRONQR

如何掃描 QR 碼 Android(初學者教程)

發佈 2024年12月16日
分享:

如今,QR 碼隨處可見,提供快速鏈接至網站、折扣或重要資訊。 然而,掃描它們的方法在所有 Android 設備上並不總是相同的。 根據您的手機型號,您可能可以使用內建的相機應用程式,或者您可能需要一個單獨的QR碼掃描器. 為了解除任何疑惑,我們整理了一份詳細指南,幫助您在任何 Android 智能手機或平板電腦上輕鬆掃描 QR 碼。 我們還將探討使用程式化方法掃描 QR 碼。IronQR 函式庫.

內建方法掃描Android上的QR碼

Android 裝置通常內建原生功能以支援 QR 碼掃描。 這些內建方法提供了便利性和安全性,因為它們不需要安裝第三方應用程式。 讓我們來檢視 Android 設備使用者可用的主要內建選項。

Google Lens App

Google Lens 是一款功能強大的視覺分析工具,具備 QR 碼掃描功能。 這個應用程式通常預先安裝在 Android 裝置上,可以透過多種入口存取。

存取 Google Lens

用戶可以根據其裝置和偏好,通過多種方法在其 Android 手機上訪問 Google Lens。 最常見的方法是透過 Google 應用程式。以下是使用 Google Lens 的步驟:

  1. 打開 Google 應用程式

  2. 在搜尋欄附近找到 Google Lens 圖示

    如何掃描QR Code Android(初學者教程):圖1

  3. 輕觸圖示以啟動 Google Lens

    對於喜歡處理現有圖像的人來說,Google 照片提供了另一個入口。 過程如下:

  4. 打開 Google 相片

    1. 選擇包含 QR 碼的圖像

    如何掃描 QR Code Android(初學者教程):圖 2

  5. 點擊螢幕底部的 Google Lens 圖示。 之後,您可以使用 Google 鏡頭功能進行 QR 碼掃描。

    一些 Android 設備,特別是運行較新版本操作系統的設備,將 Google Lens 直接整合到原生相機應用程式中。 這些裝置的使用者可以通過以下方式訪問 Google Lens:

  6. 啟動相機應用程式

  7. 尋找「模式」或「更多」選項

  8. 選擇 Google Lens(如果可用)

使用 Google Lens 掃描 QR 碼

一旦啟用 Google Lens,掃描 QR 碼的過程就變得簡單明瞭。 以下是使用方法:

  1. 將您的設備相機對準 QR 碼

  2. 等待 Google Lens 自動啟動掃描

  3. 當 QR 碼被識別時,將彈出一個包含編碼信息的窗口。

  4. 點擊彈出視窗以進入連結內容或執行相關操作。

2. 快速設定方塊

某些 Android 設備提供用於 QR 碼掃描的快速設置磚,方便快速使用此功能。 若要設置和使用此功能:

  1. 從螢幕頂端向下滑動以進入快速設定面板。

    如何掃描 QR Code Android(初學者教程):圖 3

  2. 向下滑動兩次以展開完整面板。

    如何掃描 QR Code Android(初學者教程):圖 4

  3. 尋找編輯功能,通常以鉛筆圖標或三個點圖標表示。

    如何掃描 QR Code Android(初學者教程):圖 5

  4. 在編輯模式下,搜尋標有「QR code」或「QR Scanner」的方塊。

    如何掃描 QR Code Android(初學者教程):圖 6

  1. 將此磚塊拖入活動的快速設置區域。

  2. 儲存變更以確認新的佈局。

    要使用快速設置 QR 碼掃描器:

  3. 打開快速設定面板。

  4. 點擊 QR 碼掃描器圖塊。

  5. 該裝置將啟動 QR 碼掃描介面,可能會使用相機應用程式或 Google Lens。

  6. 將相機對準 QR 碼以開始掃描。

    這些內建的方法為 Android 用戶提供了高效的方法來掃描 QR 碼,無需安裝其他軟體。 用戶可以快速訪問編碼在 QR 碼中的信息,同時保持其設備的安全性和完整性。 除此之外,您可以通過 Google Play 商店在 Android 手機上下載第三方應用程式來進行 QR 碼掃描。

介紹 IronQR .NET 函式庫

雖然我們討論過的內建方法為最終使用者提供了出色的 QR 碼掃描功能,但開發人員往往需要更強大的工具來在其應用程式中創建和操作 QR 碼。 這就是 IronQR .NET 庫發揮作用的地方。 它為 Android 應用程式開發中的 QR 碼功能提供了一個強大的解決方案。

IronQR 概覽

如何掃描QR Code Android(初學者教程):圖7

IronQR是一個專為生成而設計的全面 .NET 庫,讀取 QR 碼和處理 QR 碼。 雖然主要針對 .NET 開發者,但可以透過像 Xamarin 或 .NET MAUI 這樣的框架用於 Android 開發。 它是具有 QR 功能的跨平台應用程式的理想選擇。

主要功能和優勢

IronQR 提供許多關於 QR 碼功能的特色:

  1. QR Code 生成:開發者可以通過程式設計方式生成 QR 碼,控制各種參數如大小、錯誤修正級別和內容。

  2. 先進的掃描功能:該庫提供強大的演算法來讀取QR碼,即使在困難條件下或從圖片中也能讀取。

  3. 自訂選項:IronQR允許創建自訂QR碼,包括添加標誌或自訂顏色,同時保持可掃描性。

  4. 支持多種數據類型:該函式庫能夠將不同類型的數據,包括URL、聯絡資訊和自訂文字,編碼成QR碼。

  5. 錯誤處理和修正:IronQR 採用先進的錯誤更正技術,確保生成的 QR 碼可靠且易於掃描。

與 Android 開發整合

對於在 .NET 環境中工作的 Android 開發者,IronQR 可以整合到項目中,以提供伺服器端的 QR 碼生成或增強 Android 應用程式的功能。 此整合允許進行更複雜的QR碼操作,這在標準的Android庫中可能無法實現。

開發人員可以創建具有複雜 QR 碼功能的 Android 應用程式,例如批量生成 QR 碼、高級解碼功能或符合品牌要求的自訂 QR 碼設計。 IronQR .NET 庫是一個強大的工具,能讓開發者將其 Android 應用程式的 QR 碼功能擴展到超越標準內建功能的水平。

範例程式碼

這是使用 IronQR 的 .NET MAUI 二維碼掃描器應用示範。 在專案中安裝 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#

之後運行應用程式,您將看到以下介面。 選擇 QR 碼後,系統將掃描 QR 碼,並在文本框中顯示結果文本,您可以使用複製按鈕進行複製。

如何掃描 QR Code Android(初學者教程):圖 8

結論

如何扫描 QR 码 Android(初学者教程):图 9

在 Android 設備上掃描二維碼變得容易,因為內建了 Google Lens 及快速設置磁貼等功能。 這些原生方法讓用戶能快速且安全地獲取 QR 碼信息,無需額外的應用程式。

對於希望將高級 QR 代碼功能整合到其應用程式中的開發人員來說,IronQR .NET 函式庫提供了一個強大的解決方案。 它能夠實現自訂QR碼生成、先進的掃描功能和廣泛的自訂選項。 IronQR 提供一個免費試用供開發者探索其功能,並提供起價為 $749 的許可證,這對於在 Android 應用程式中進行專業級別的 QR 碼整合來說是一項值得的投資。

下一個 >
名片用 QR Code 生成器(入門指南)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 24,465 查看許可證 >