C# Xamarin利用ZXing.Net.Mobile进行扫码的方法

以下是C# Xamarin利用ZXing.Net.Mobile进行扫码的方法的完整攻略:

1. ZXing.Net.Mobile的介绍

1.1 什么是ZXing.Net.Mobile

ZXing.Net.Mobile是一款基于ZXing的二维码扫描框架,支持多种平台,包括Xamarin.Android、Xamarin.iOS、Windows Phone、Windows 10、Windows Desktop等。这个框架基于Apache 2.0许可证发布。

1.2 ZXing.Net.Mobile的优势

ZXing.Net.Mobile库具有内置编码和解码支持,支持二维码、条码等的扫描和生成,并且还具有单一移植代码库的优势。

1.3 ZXing.Net.Mobile的核心功能

  • 可以通过默认设置扫描和解码二维码和条码。
  • 如果需要,可以通过提供不同的options以扫描和处理不同的条码类型。
  • 可以从给定的文件中解码条形码和二维码。
  • 可以根据options生成指定类型的二维码/条码。

2. ZXing.Net.Mobile的使用

2.1 安装ZXing.Net.Mobile库

可以直接通过NuGet进行安装,也可以手动下载安装。

安装过程中需要注意,如果是在Xamarin.Forms项目中使用,需要在每个平台上下载并安装ZXing.Net.Mobile,而不是将ZXing.Net.Mobile添加到PCL或共享项目中。

2.2 在Xamarin.Forms项目中使用ZXing.Net.Mobile

首先需要注册ZXing.Net.Mobile的依赖注入服务,然后创建一个ZXingView和一个ZXingScannerView。

代码示例1

public class App : Application
{
    public App()
    {    
        // 注册ZXing.Net.Mobile依赖
        DependencyService.Register<IScanner, Scanner>();

        // 创建一个ZXingView和一个ZXingScannerView,并定义ZXingView的内容
        var mainPage = new ContentPage();
        var stack = new StackLayout();
        var zxingView = new ZXingScannerView
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand
        };
        zxingView.OnScanResult += (result) =>
            Device.BeginInvokeOnMainThread(async () => {
                await DisplayAlert("Scanned Code", result.Text, "OK");
            });
        zxingView.IsScanning = true;
        stack.Children.Add(zxingView);
        mainPage.Content = stack;
        MainPage = mainPage;
    }
}

2.3 在Xamarin.Android项目中使用ZXing.Net.Mobile

在Xamarin.Android项目中,需要先添加ZXing.Net.Mobile.Android NuGet包。

代码示例2

using System;
using System.Collections.Generic;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Com.Google.Zxing;
using Com.Google.Zxing.Common;
using Com.Google.Zxing.Qrcode;
using Com.Google.Zxing.Qrcode.Decoder;
using Xamarin.Forms.Platform.Android;
using ZXing;
using ZXing.Mobile;
using ZXing.Net.Mobile.Android;
using ZXing.QrCode;

namespace ZXingAndroid
{
    [Activity(Label = "ZXingAndroid", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : FormsAppCompatActivity, MobileBarcodeScanner.IOnScanCompletedListener
    {
        MobileBarcodeScanner _mobScanner;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            _mobScanner = new MobileBarcodeScanner(this);
            _mobScanner.UseCustomOverlay = false;
            _mobScanner.CustomTabText = "Scan Here";
            _mobScanner.TopText = "Hold camera up to barcode to scan";
            _mobScanner.BottomText = "Barcode will automatically scan";
        }

        async Task ScanAsync()
        {
            //扫描二维码
            var result = await _mobScanner.Scan(new MobileBarcodeScanningOptions
            {
                UseFrontCameraIfAvailable = false,
                TryHarder = true,
                PossibleFormats = new List<BarcodeFormat> { BarcodeFormat.QR_CODE }
            });
            //处理扫描结果  
            if (result != null)
            {
                _mobScanner.AutoFocus();
                Console.WriteLine("扫码结果: " + result.Text);
            }
        }

        private void QrCodeScanner_onDecodeResult(Result result)
        {
            Console.WriteLine(result.Text);
        }

        public void OnScanCompleted(string p0, global::ZXing.Result p1)
        {
            throw new NotImplementedException();
        }
    }
}

上述示例演示了如何使用ZXing.Net.Mobile在Xamarin.Android中扫描二维码,以及如何处理扫描结果。

3. 总结

通过上述示例,我们可以轻松了解到如何使用ZXing.Net.Mobile在Xamarin平台上的使用方法,通过扫描条码和二维码的例子我们也了解了ZXing.Net.Mobile库的用法。在实际开发工作中,能够熟练掌握这个框架,可以为我们的开发工作加速计。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Xamarin利用ZXing.Net.Mobile进行扫码的方法 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 一篇文章带你轻松了解C# Lock关键字

    一篇文章带你轻松了解C# Lock关键字 Lock关键字是什么 Lock是C#编程中非常重要的一个关键字,主要用来进行多线程编程时的同步控制。在多线程程序中,不同的线程会同时对同一数据进行访问,如果没有同步控制,则有可能发生数据竞争的问题。使用Lock关键字可以保证在同一时间只有一个线程对共享资源进行访问。 Lock关键字的用法 Lock关键字用法非常简单,…

    C# 2023年5月15日
    00
  • 各种AJAX方法的使用比较详解

    AJAX(Asynchronous JavaScript and XML)是一种用于创建异步Web应用程序的技术。它可以在不刷新整个页面的情况下更新部分页面内容,提高Web应用程序的响应速度和用户体验。本文将介绍各种AJAX方法的使用,包括XMLHttpRequest、jQuery AJAX和Fetch API。 XMLHttpRequest XMLHttp…

    C# 2023年5月15日
    00
  • 详解.NET Core 3.0 里新的JSON API

    在本攻略中,我们将详细讲解.NET Core 3.0中新的JSON API,并提供两个示例说明。 安装Microsoft.AspNetCore.Mvc.NewtonsoftJson:首先,我们需要安装Microsoft.AspNetCore.Mvc.NewtonsoftJson NuGet包。我们可以使用Visual Studio的Get包管理器来安装Mic…

    C# 2023年5月16日
    00
  • winform 实现选择文件和选择文件夹对话框的简单实例

    以下是“winform 实现选择文件和选择文件夹对话框的简单实例”的攻略。 1. 引言 在编写 winform 程序时,我们常常需要用到让用户选择文件或者目录的功能。实现这个功能,我们需要用到 System.Windows.Forms 命名空间中的 OpenFileDialog 和 FolderBrowserDialog 类。 2. 实现选择文件对话框 接下…

    C# 2023年6月1日
    00
  • 基于C#生成随机数示例

    生成随机数是很常见的一种需求,无论是在游戏、金融还是科学领域,都需要使用到随机数。C#作为一门强大的编程语言,自然也提供了非常方便的方法来生成随机数。 下面是生成随机数的完整攻略。 步骤一 – 声明随机数生成器 首先,我们需要创建 Random 类型的对象,来帮助我们生成随机数。 在 C# 中,我们可以使用以下代码生成随机数生成器: Random rando…

    C# 2023年6月1日
    00
  • C#中使用迭代器处理等待任务

    下面是关于C#中使用迭代器处理等待任务的完整攻略: 1. 使用迭代器和async/await处理任务 在C#中,我们使用async/await来异步处理任务。但是如果需要按顺序执行多个异步任务,常规的做法是使用多个await关键字。例如: async Task DoSomethingAsync() { var result1 = await GetResul…

    C# 2023年5月15日
    00
  • c#与WMI使用技巧集第1/2页

    c#与WMI使用技巧集第1/2页是一篇介绍C#与WMI使用技巧的文章,主要包括WMI的基础知识、C#中如何使用WMI等方面的内容。以下是该文章完整攻略的详细讲解: WMI基础知识 WMI(Windows Management Instrumentation)是一种用于管理Windows操作系统的工具,可以用于获取系统信息、监控、配置等。在C#中使用WMI可以…

    C# 2023年6月6日
    00
  • win10下ASP.NET Core部署环境搭建步骤

    win10下ASP.NET Core部署环境搭建步骤 ASP.NET Core是一个跨平台的开源Web框架,可以在Windows、Linux和macOS等操作系统上运行。在本攻略中,我们将介绍如何在Windows 10操作系统上搭建ASP.NET Core部署环境,并提供两个示例说明。 1. 安装.NET Core SDK 在Windows 10操作系统上搭…

    C# 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部