Dynamsoft.CaptureVision.Xamarin.Forms
1.0.0
See the version list below for details.
dotnet add package Dynamsoft.CaptureVision.Xamarin.Forms --version 1.0.0
NuGet\Install-Package Dynamsoft.CaptureVision.Xamarin.Forms -Version 1.0.0
<PackageReference Include="Dynamsoft.CaptureVision.Xamarin.Forms" Version="1.0.0" />
paket add Dynamsoft.CaptureVision.Xamarin.Forms --version 1.0.0
#r "nuget: Dynamsoft.CaptureVision.Xamarin.Forms, 1.0.0"
// Install Dynamsoft.CaptureVision.Xamarin.Forms as a Cake Addin #addin nuget:?package=Dynamsoft.CaptureVision.Xamarin.Forms&version=1.0.0 // Install Dynamsoft.CaptureVision.Xamarin.Forms as a Cake Tool #tool nuget:?package=Dynamsoft.CaptureVision.Xamarin.Forms&version=1.0.0
Barcode Reader User Guide for Xamarin
Dynamsoft Capture Vision (DCV) is an aggregating SDK of a series of specific functional products including:
- Dynamsoft Camera Enhancer (DCE) which provides camera enhancements and UI configuration APIs.
- Dynamsoft Barcode Reader (DBR) which provides barcode decoding algorithm and APIs.
- Dynamsoft Label Recognizer (DLR) which provides label content recognizing algorithm and APIs.
- Dynamsoft Document Normalizer (DDN) which provides document scanning algorithms and APIs.
Note: DCV Flutter edition currently only includes DCE and DBR modules. DLR and DDN modules are still under development and will be included in the future.
System Requirements
Xamarin
- NETStandard.Library 2.0+
- Xamarin.Forms 5.0.0.2478+
- Xamarin.Essentials: 1.3.1+ (1.4.0+ Recommended)
Android
- Supported OS: Android 5.0 (API Level 21) or higher.
- Supported ABI: armeabi-v7a, arm64-v8a, x86 and x86_64.
- Development Environment: Android Studio 3.4+ (Android Studio 4.2+ recommended).
- JDK: 1.8+
iOS
- Supported OS: iOS 9.0 or higher.
- Supported ABI: arm64 and x86_64.
- Development Environment: Xcode 10 and above.
Installation
In the NuGet Package Manager>Manage Packages for Solution of your project, search for Dynamsoft.CaptureVision.Xamarin.Forms. Select all the modules of your project and click install.
Build Your Barcode Scanner App
Now you will learn how to create a simple barcode scanner using Dynamsoft Capture Vision Xamarin SDK.
Note: You can get the full source code of a similar project: Barcode Reader Simple Sample.
Set up Development Environment
If you are a beginner with Xamarin, please follow the guide on the Xamarin official website to set up the development environment.
Initialize the Project
Visual Studio
- Open the Visual Studio and select Create a new project.
- Select Mobile App (Xamarin.Forms) and click Next.
- Name the project SimpleBarcodeScanner. Select a location for the project and click Create.
- Select Blank and click Create.
Visual Studio for Mac
- Open Visual Studio and select New.
- Select Multiplatform > App > Blank App > C# and click Next.
- Name the project SimpleBarcodeScanner and click Next.
- Select a location for the project and click Create.
Include the Library
Add NuGet package Dynamsoft.CaptureVision.Xamarin.Forms to your project. You can view the installation section on how to add the library.
Initialize IDCVBarcodeReader and IDCVCameraEnhancer
You have to initialize the following two interfaces to decode barcodes with the library.
IDCVBarcodeReader
: The interface that defines barcode decoding APIs and helps set up barcode decoding configurations.IDCVCameraEnhancer
: The interface that defines camera controlling APIs and helps you to set up a camera module to capture the video stream.
In App.xaml.cs, add the following code to initialize the IDCVBarcodeReader
and IDCVCameraEnhancer
objects.
using DCVXamarin;
namespace SimpleBarcodeScanner
{
public partial class App : Application
{
public static IDCVCameraEnhancer camera;
public static IDCVBarcodeReader barcodeReader;
public App(IDCVCameraEnhancer dce, IDCVBarcodeReader dbr)
{
InitializeComponent();
camera = dce;
barcodeReader = dbr;
MainPage = new NavigationPage(new MainPage());
}
}
}
Implement the Interfaces for Android
Open the MainActivity.cs in SimpleBarcodeScanner.Android folder. Change the code of LoadApplication
to:
using DCVXamarin.Droid;
namespace dbr.Droid
{
...
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
DCVCameraEnhancer dce = new DCVCameraEnhancer(context: this);
DCVBarcodeReader dbr = new DCVBarcodeReader();
LoadApplication(new App(dce, dbr));
...
}
...
}
}
Implement the Interfaces for iOS
Open the AppDelegate.cs in SimpleBarcodeScanner.iOS folder. Change the code of LoadApplication
to:
using DCVXamarin.iOS;
namespace dbr.iOS
{
...
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
DCVCameraEnhancer dce = new DCVCameraEnhancer();
DCVBarcodeReader dbr = new DCVBarcodeReader();
LoadApplication(new App(dce, dbr));
return base.FinishedLaunching(app, options);
}
}
}
License Activation
The barcode reading module of Dynamsoft Capture Vision needs a valid license to work. Please refer to the Licensing section for more info on how to obtain a license.
Go back to App.xaml.cs. Add the following code to activate the license:
namespace SimpleBarcodeScanner
{
// Add ILicenseVerificationListener to the class and implement LicenseVerificationCallback.
public partial class App : Application, ILicenseVerificationListener
{
public App(IDCVCameraEnhancer dce, IDCVBarcodeReader dbr)
{
...
// Initialize the license of barcode reader module. Please note that the following license is a public trial.
barcodeReader.InitLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", this);
// You can add any extra barcode reader settings configurations after the license initialization
...
}
// Implement LicenseVerificationCallback to get message from the license server.
public void LicenseVerificationCallback(bool isSuccess, string msg)
{
if (!isSuccess)
{
System.Console.WriteLine(msg);
}
}
}
}
Add a Button to Start Scanning
In the MainPage.xaml, add the following code:
<StackLayout>
<Button x:Name="startScanning" Text="Start Scanning" HorizontalOptions="Center" VerticalOptions="CenterAndExpand" Clicked="OnStartScanningButtonClicked" />
</StackLayout>
In the MainPage.xaml.cs, add the following code:
async void OnStartScanningButtonClicked(object sender, EventArgs e)
{
await Navigation.PushAsync(new ScanningPage());
}
Configure the CameraView
Create a new Xamarin.Forms content page in the project and name it ScanningPage. In the ScanningPage.xaml add the CameraView
:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:dynamsoft = "clr-namespace:DCVXamarin;assembly=DCVXamarin"
x:Class="SimpleBarcodeScanner.ScanningPage">
<ContentPage.Content>
<StackLayout>
<Label x:Name="barcodeResultLabel" Text="No Barcode detected"></Label>
<dynamsoft:DCVCameraView OverlayVisible="True"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand" >
</dynamsoft:DCVCameraView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Open the Camera and Start Barcode Decoding
In this section, we are going to add code to start barcode decoding in the ScanningPage of the project. Open the ScanningPage.xaml.cs and add the following code:
using DCVXamarin;
namespace SimpleBarcodeScanner
{
public partial class ScanningPage : ContentPage
{
public ScanningPage()
{
InitializeComponent();
// Bind the CameraEnhancer to the BarcodeReader so that it can continuously obtain video stream from the camera for barcode decoding.
App.barcodeReader.SetCameraEnhancer(App.camera);
}
protected override void OnAppearing()
{
base.OnAppearing();
// Open the camera the the view appears.
App.camera.Open();
// Start barcode decoding thread when the view appears.
App.barcodeReader.StartScanning();
}
protected override void OnDisappearing()
{
base.OnDisappearing();
// Close the camera the the view appears.
App.camera.Close();
// Stop barcode decoding thread when the view appears.
App.barcodeReader.StopScanning();
}
}
}
Obtaining Barcode Results
With the barcode decoding thread now configured, the library will start decoding from the video steam when the ScanningPage appears. You can use the interface IBarcodeResultListener
to obtain the decoded BarcodeResults
.
In ScanningPage.xaml, add a label for displaying the barcode results
<StackLayout>
<Label x:Name="barcodeResultLabel" Text="No Barcode detected"></Label>
...
</StackLayout>
In ScanningPage.xaml.cs, add configurations of IBarcodeResultListener
.
namespace SimpleBarcodeScanner
{
// Add IBarcodeResultListener to your ScanningPage so that you can receive the barcode results.
public partial class ScanningPage : ContentPage, IBarcodeResultListener
{
public ScanningPage()
{
...
App.barcodeReader.AddResultlistener(this);
}
...
// Implement the BarcodeResultCallback so that you can receive the barcode results when the barcodes are decoded.
public void BarcodeResultCallback(int frameID, BarcodeResult[] barcodeResults)
{
// Here is an example code on how to display the barcode results on the view.
string newBarcodeText = "";
// The parameter 'barcodeResults' is an Array of BarcodeResult object.
// Parse the 'barcodeResults' when it is not null.
if (barcodeResults != null && barcodeResults.Length>0)
{
for (int i=0; i<barcodeResults.Length; i++)
{
{
//The BarcodeText property of BarcodeResult is the string of barcode text result.
newBarcodeText += barcodeResults[i].BarcodeText;
newBarcodeText += "; ";
}
}
// On UI thread, refresh the previously prepared label with new barcode results.
Device.BeginInvokeOnMainThread(()=> {
barcodeResultLabel.Text = newBarcodeText;
});
}
}
}
}
Add Camera Permission
Android
Add the following code in MainActivity.cs for requesting camera permission on Android devices.
using Xamarin.Essentials;
namespace SimpleBarcodeScanner.Droid
{
...
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
...
// Add camera permission.
Permissions.RequestAsync<Permissions.Camera>();
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
...
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
iOS
Add Privacy - Camera Usage Description and your message to the info.plist of your project.
Run the Project
Run Android on Windows
Select SimpleBarcodeScanner.Android and select your device. Run the project.
Run iOS & Android on macOS
- Right click on the SimpleBarcodeReader.iOS or SimpleBarcodeReader.Android and select Set As Startup Project.
- In the menu, select and click Run > Start Debugging.
Samples
You can view all the DCV Xamarin samples via the following links:
API References
View the API reference of DCV Xamarin Edition to explore the full feature of DCV:
Licensing
- You can also request an extension for your trial license in the customer portal
Contact
Product | Versions Compatible and additional computed target framework versions. |
---|---|
MonoAndroid | monoandroid10.0 is compatible. |
Xamarin.iOS | xamarinios10 is compatible. |
-
MonoAndroid 10.0
- Xamarin.Android.Support.v4 (>= 28.0.0.3)
- Xamarin.AndroidX.AppCompat (>= 1.2.0.5)
- Xamarin.Forms (>= 5.0.0.2478)
-
Portable Class Library (.NETFramework 4.5, Windows 8.0, WindowsPhoneApp 8.1)
- Microsoft.NETCore.Platforms (>= 1.1.0)
- Microsoft.NETCore.Targets (>= 1.1.0)
- runtime.native.System (>= 4.3.0)
- System.Reflection (>= 4.3.0)
- System.Reflection.Extensions (>= 4.3.0)
- System.Resources.ResourceManager (>= 4.3.0)
- System.Runtime (>= 4.3.0)
- System.Runtime.InteropServices (>= 4.3.0)
- System.Runtime.InteropServices.RuntimeInformation (>= 4.3.0)
- System.Threading (>= 4.3.0)
- Xamarin.Forms (>= 5.0.0.2478)
-
Xamarin.iOS 1.0
- Xamarin.Forms (>= 5.0.0.2478)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.