mirror of
https://github.com/wahyd4/BarcodeScanner.git
synced 2026-08-12 06:25:54 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12be23d657 | ||
|
|
12ecfd7f55 | ||
|
|
933525da37 | ||
|
|
7ad74807c3 | ||
|
|
4ed50488b6 | ||
|
|
91d7e9aa4a | ||
|
|
eab15a370a | ||
|
|
a7bf6fc2c0 | ||
|
|
7d831d83ed | ||
|
|
ec4de624ae | ||
|
|
ba3c96c386 | ||
|
|
24acf29896 |
@@ -1,6 +1,11 @@
|
|||||||
BarcodeScanner
|
BarcodeScanner
|
||||||
==============
|
==============
|
||||||
|
|
||||||
|
Added version that runs with windows mobile devices.
|
||||||
|
To run on those devices, the zxing.net library must be added to the project (Install as nuget packet - more information on http://www.nuget.org/packages/ZXing.Net)
|
||||||
|
|
||||||
|
Windows Phone currently only supports Scaning for codes, feel free to extend it that it can also encode.
|
||||||
|
|
||||||
Cross-platform BarcodeScanner for Cordova / PhoneGap.
|
Cross-platform BarcodeScanner for Cordova / PhoneGap.
|
||||||
|
|
||||||
Follows the [Cordova Plugin spec](https://github.com/apache/cordova-plugman/blob/master/plugin_spec.md), so that it works with [Plugman](https://github.com/apache/cordova-plugman).
|
Follows the [Cordova Plugin spec](https://github.com/apache/cordova-plugman/blob/master/plugin_spec.md), so that it works with [Plugman](https://github.com/apache/cordova-plugman).
|
||||||
@@ -61,7 +66,7 @@ A full example could be:
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Encoding a Barcode ##
|
## Encoding a Barcode ##
|
||||||
The plugin creates the object `window.plugins.barcodeScanner` with the method `encode(type, data, success, fail)`.
|
The plugin creates the object `cordova.plugins.barcodeScanner` with the method `encode(type, data, success, fail)`.
|
||||||
Supported encoding types:
|
Supported encoding types:
|
||||||
|
|
||||||
* TEXT_TYPE
|
* TEXT_TYPE
|
||||||
|
|||||||
+31
-2
@@ -1,20 +1,22 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?><plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
|
<?xml version="1.0" encoding="UTF-8"?><plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
id="com.phonegap.plugins.barcodescanner"
|
id="com.phonegap.plugins.barcodescanner"
|
||||||
version="1.0.0">
|
version="1.2.0">
|
||||||
|
|
||||||
<name>BarcodeScanner</name>
|
<name>BarcodeScanner</name>
|
||||||
<description>Scans Barcodes.</description>
|
<description>Scans Barcodes.</description>
|
||||||
<license>MIT</license>
|
<license>MIT</license>
|
||||||
|
|
||||||
<engines>
|
<engines>
|
||||||
<engine name="cordova" version=">=2.9.0" />
|
<engine name="cordova" version=">=3.0.0" />
|
||||||
</engines>
|
</engines>
|
||||||
|
|
||||||
<js-module src="www/barcodescanner.js" name="BarcodeScanner">
|
<js-module src="www/barcodescanner.js" name="BarcodeScanner">
|
||||||
<clobbers target="cordova.plugins.barcodeScanner" />
|
<clobbers target="cordova.plugins.barcodeScanner" />
|
||||||
</js-module>
|
</js-module>
|
||||||
|
|
||||||
|
<asset src="www/barcodescanner.js" target="barcodescanner.js" />
|
||||||
|
|
||||||
<!-- ios -->
|
<!-- ios -->
|
||||||
<platform name="ios">
|
<platform name="ios">
|
||||||
<!-- Cordova >= 2.8 -->
|
<!-- Cordova >= 2.8 -->
|
||||||
@@ -35,8 +37,35 @@
|
|||||||
<framework src="AVFoundation.framework" />
|
<framework src="AVFoundation.framework" />
|
||||||
<framework src="AssetsLibrary.framework" />
|
<framework src="AssetsLibrary.framework" />
|
||||||
<framework src="CoreVideo.framework" />
|
<framework src="CoreVideo.framework" />
|
||||||
|
<framework src="QuartzCore.framework" />
|
||||||
</platform>
|
</platform>
|
||||||
|
|
||||||
|
<platform name="wp7">
|
||||||
|
<config-file target="config.xml" parent="/*">
|
||||||
|
<feature name="BarcodeScanner">
|
||||||
|
<param name="wp-package" value="BarcodeScanner"/>
|
||||||
|
</feature>
|
||||||
|
</config-file>
|
||||||
|
|
||||||
|
<source-file src="src/wp/BarcodeScanner.cs" />
|
||||||
|
<source-file src="src/wp/BarcodeScannerResult.cs" />
|
||||||
|
<source-file src="src/wp/Scan.xaml.cs" />
|
||||||
|
<source-file src="src/wp/Scan.xaml" />
|
||||||
|
</platform>
|
||||||
|
|
||||||
|
<platform name="wp8">
|
||||||
|
<config-file target="config.xml" parent="/*">
|
||||||
|
<feature name="BarcodeScanner">
|
||||||
|
<param name="wp-package" value="BarcodeScanner"/>
|
||||||
|
</feature>
|
||||||
|
</config-file>
|
||||||
|
|
||||||
|
<source-file src="src/wp/BarcodeScanner.cs" />
|
||||||
|
<source-file src="src/wp/BarcodeScannerResult.cs" />
|
||||||
|
<source-file src="src/wp/Scan.xaml.cs" />
|
||||||
|
<source-file src="src/wp/Scan.xaml" />
|
||||||
|
</platform>
|
||||||
|
|
||||||
<!-- android -->
|
<!-- android -->
|
||||||
<platform name="android">
|
<platform name="android">
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
#import <AVFoundation/AVFoundation.h>
|
#import <AVFoundation/AVFoundation.h>
|
||||||
#import <AssetsLibrary/AssetsLibrary.h>
|
#import <AssetsLibrary/AssetsLibrary.h>
|
||||||
|
#import <AudioToolbox/AudioToolbox.h>
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// use the all-in-one version of zxing that we built
|
// use the all-in-one version of zxing that we built
|
||||||
@@ -205,6 +206,8 @@
|
|||||||
@synthesize is2D = _is2D;
|
@synthesize is2D = _is2D;
|
||||||
@synthesize capturing = _capturing;
|
@synthesize capturing = _capturing;
|
||||||
|
|
||||||
|
SystemSoundID _soundFileObject;
|
||||||
|
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
- (id)initWithPlugin:(CDVBarcodeScanner*)plugin
|
- (id)initWithPlugin:(CDVBarcodeScanner*)plugin
|
||||||
callback:(NSString*)callback
|
callback:(NSString*)callback
|
||||||
@@ -222,6 +225,9 @@ parentViewController:(UIViewController*)parentViewController
|
|||||||
self.is2D = YES;
|
self.is2D = YES;
|
||||||
self.capturing = NO;
|
self.capturing = NO;
|
||||||
|
|
||||||
|
CFURLRef soundFileURLRef = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("CDVBarcodeScanner.bundle/beep"), CFSTR ("caf"), NULL);
|
||||||
|
AudioServicesCreateSystemSoundID(soundFileURLRef, &_soundFileObject);
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,6 +243,9 @@ parentViewController:(UIViewController*)parentViewController
|
|||||||
|
|
||||||
self.capturing = NO;
|
self.capturing = NO;
|
||||||
|
|
||||||
|
AudioServicesRemoveSystemSoundCompletion(_soundFileObject);
|
||||||
|
AudioServicesDisposeSystemSoundID(_soundFileObject);
|
||||||
|
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,6 +290,9 @@ parentViewController:(UIViewController*)parentViewController
|
|||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
- (void)barcodeScanSucceeded:(NSString*)text format:(NSString*)format {
|
- (void)barcodeScanSucceeded:(NSString*)text format:(NSString*)format {
|
||||||
[self barcodeScanDone];
|
[self barcodeScanDone];
|
||||||
|
|
||||||
|
AudioServicesPlaySystemSound(_soundFileObject);
|
||||||
|
|
||||||
[self.plugin returnSuccess:text format:format cancelled:FALSE callback:self.callback];
|
[self.plugin returnSuccess:text format:format cancelled:FALSE callback:self.callback];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,7 +332,9 @@ parentViewController:(UIViewController*)parentViewController
|
|||||||
output.alwaysDiscardsLateVideoFrames = YES;
|
output.alwaysDiscardsLateVideoFrames = YES;
|
||||||
output.videoSettings = videoOutputSettings;
|
output.videoSettings = videoOutputSettings;
|
||||||
|
|
||||||
[output setSampleBufferDelegate:self queue:dispatch_get_main_queue()];
|
dispatch_queue_t queue = dispatch_queue_create("CDVBarcodeScanner", NULL);
|
||||||
|
[output setSampleBufferDelegate:self queue:queue];
|
||||||
|
dispatch_release(queue);
|
||||||
|
|
||||||
if (![captureSession canSetSessionPreset:AVCaptureSessionPresetMedium]) {
|
if (![captureSession canSetSessionPreset:AVCaptureSessionPresetMedium]) {
|
||||||
return @"unable to preset medium quality video capture";
|
return @"unable to preset medium quality video capture";
|
||||||
@@ -416,7 +430,13 @@ parentViewController:(UIViewController*)parentViewController
|
|||||||
const char* cString = resultText->getText().c_str();
|
const char* cString = resultText->getText().c_str();
|
||||||
NSString* resultString = [[[NSString alloc] initWithCString:cString encoding:NSUTF8StringEncoding] autorelease];
|
NSString* resultString = [[[NSString alloc] initWithCString:cString encoding:NSUTF8StringEncoding] autorelease];
|
||||||
|
|
||||||
[self barcodeScanSucceeded:resultString format:format];
|
NSMethodSignature *sig = [self methodSignatureForSelector:@selector(barcodeScanSucceeded:format:)];
|
||||||
|
NSInvocation *invoke = [NSInvocation invocationWithMethodSignature:sig];
|
||||||
|
[invoke setTarget:self];
|
||||||
|
[invoke setSelector:@selector(barcodeScanSucceeded:format:)];
|
||||||
|
[invoke setArgument:&resultString atIndex:2];
|
||||||
|
[invoke setArgument:&format atIndex:3];
|
||||||
|
[invoke performSelectorOnMainThread:@selector(invoke) withObject:nil waitUntilDone:YES];
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (zxing::ReaderException &rex) {
|
catch (zxing::ReaderException &rex) {
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
using BarcodeScanner;
|
||||||
|
using Microsoft.Phone.Controls;
|
||||||
|
using System;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using WPCordovaClassLib.Cordova;
|
||||||
|
using WPCordovaClassLib.Cordova.Commands;
|
||||||
|
using WPCordovaClassLib.Cordova.JSON;
|
||||||
|
|
||||||
|
namespace Cordova.Extension.Commands
|
||||||
|
{
|
||||||
|
public class BarcodeScanner : BaseCommand
|
||||||
|
{
|
||||||
|
private PhoneApplicationFrame currentRootVisual;
|
||||||
|
|
||||||
|
public void scan(string options)
|
||||||
|
{
|
||||||
|
Deployment.Current.Dispatcher.BeginInvoke(() =>
|
||||||
|
{
|
||||||
|
currentRootVisual = Application.Current.RootVisual as PhoneApplicationFrame;
|
||||||
|
currentRootVisual.Navigated += OnFrameNavigated;
|
||||||
|
currentRootVisual.Navigate(new Uri("/Plugins/com.phonegap.plugins.barcodescanner/Scan.xaml", UriKind.Relative));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnFrameNavigated(object sender, NavigationEventArgs e)
|
||||||
|
{
|
||||||
|
var scanPage = e.Content as Scan;
|
||||||
|
if (scanPage != null)
|
||||||
|
{
|
||||||
|
scanPage.BarcodeScannerPlugin = this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnScanFailed(string error)
|
||||||
|
{
|
||||||
|
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, error));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnScanSucceeded(BarcodeScannerResult scanResult)
|
||||||
|
{
|
||||||
|
var resultString = JsonHelper.Serialize(scanResult);
|
||||||
|
DispatchCommandResult(new PluginResult(PluginResult.Status.OK, resultString));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace BarcodeScanner
|
||||||
|
{
|
||||||
|
public class BarcodeScannerResult
|
||||||
|
{
|
||||||
|
public string format
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string text
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<phone:PhoneApplicationPage
|
||||||
|
x:Class="BarcodeScanner.Scan"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
|
||||||
|
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
FontFamily="{StaticResource PhoneFontFamilyNormal}"
|
||||||
|
FontSize="{StaticResource PhoneFontSizeNormal}"
|
||||||
|
Foreground="{StaticResource PhoneForegroundBrush}"
|
||||||
|
SupportedOrientations="Portrait" Orientation="Portrait"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
shell:SystemTray.IsVisible="True">
|
||||||
|
|
||||||
|
<!--LayoutRoot is the root grid where all page content is placed-->
|
||||||
|
<Grid x:Name="LayoutRoot" Background="Transparent">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
<RowDefinition Height="100" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Canvas x:Name="viewfinderCanvas">
|
||||||
|
|
||||||
|
<!--Camera viewfinder -->
|
||||||
|
<Canvas.Background>
|
||||||
|
<VideoBrush x:Name="viewfinderBrush">
|
||||||
|
<VideoBrush.RelativeTransform>
|
||||||
|
<CompositeTransform
|
||||||
|
x:Name="viewfinderTransform"
|
||||||
|
CenterX="0.5"
|
||||||
|
CenterY="0.5"
|
||||||
|
Rotation="90"/>
|
||||||
|
</VideoBrush.RelativeTransform>
|
||||||
|
</VideoBrush>
|
||||||
|
</Canvas.Background>
|
||||||
|
</Canvas>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
</phone:PhoneApplicationPage>
|
||||||
@@ -0,0 +1,151 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using Microsoft.Phone.Controls;
|
||||||
|
using Microsoft.Phone.Shell;
|
||||||
|
using Microsoft.Devices;
|
||||||
|
using System.Windows.Threading;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using ZXing;
|
||||||
|
|
||||||
|
namespace BarcodeScanner
|
||||||
|
{
|
||||||
|
public partial class Scan : PhoneApplicationPage
|
||||||
|
{
|
||||||
|
private PhotoCamera phoneCamera;
|
||||||
|
private IBarcodeReader barcodeReader;
|
||||||
|
private DispatcherTimer scanTimer;
|
||||||
|
private WriteableBitmap previewBuffer;
|
||||||
|
|
||||||
|
private string scannedCode = string.Empty;
|
||||||
|
|
||||||
|
private bool scanSucceeded;
|
||||||
|
|
||||||
|
public Scan()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Cordova.Extension.Commands.BarcodeScanner BarcodeScannerPlugin
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
|
||||||
|
{
|
||||||
|
// Initialize the camera object
|
||||||
|
phoneCamera = new PhotoCamera();
|
||||||
|
phoneCamera.Initialized += OnCameraInitialized;
|
||||||
|
|
||||||
|
CameraButtons.ShutterKeyHalfPressed += OnCameraButtonShutterKeyHalfPressed;
|
||||||
|
|
||||||
|
//Display the camera feed in the UI
|
||||||
|
viewfinderBrush.SetSource(phoneCamera);
|
||||||
|
|
||||||
|
|
||||||
|
// This timer will be used to scan the camera buffer every 250ms and scan for any barcodes
|
||||||
|
scanTimer = new DispatcherTimer();
|
||||||
|
scanTimer.Interval = TimeSpan.FromMilliseconds(250);
|
||||||
|
scanTimer.Tick += (o, arg) => ScanForBarcode();
|
||||||
|
|
||||||
|
base.OnNavigatedTo(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCameraButtonShutterKeyHalfPressed(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
phoneCamera.Focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
|
||||||
|
{
|
||||||
|
scanTimer.Stop();
|
||||||
|
|
||||||
|
if (phoneCamera != null)
|
||||||
|
{
|
||||||
|
phoneCamera.Dispose();
|
||||||
|
phoneCamera.Initialized -= OnCameraInitialized;
|
||||||
|
CameraButtons.ShutterKeyHalfPressed -= OnCameraButtonShutterKeyHalfPressed;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!scanSucceeded)
|
||||||
|
{
|
||||||
|
BarcodeScannerPlugin.OnScanFailed("Cancelled by user");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnCameraInitialized(object sender, Microsoft.Devices.CameraOperationCompletedEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Succeeded)
|
||||||
|
{
|
||||||
|
this.Dispatcher.BeginInvoke(delegate()
|
||||||
|
{
|
||||||
|
phoneCamera.FlashMode = FlashMode.Off;
|
||||||
|
previewBuffer = new WriteableBitmap((int)phoneCamera.PreviewResolution.Width, (int)phoneCamera.PreviewResolution.Height);
|
||||||
|
|
||||||
|
barcodeReader = new BarcodeReader();
|
||||||
|
|
||||||
|
// By default, BarcodeReader will scan every supported barcode type
|
||||||
|
// If we want to limit the type of barcodes our app can read,
|
||||||
|
// we can do it by adding each format to this list object
|
||||||
|
|
||||||
|
//var supportedBarcodeFormats = new List<BarcodeFormat>();
|
||||||
|
//supportedBarcodeFormats.Add(BarcodeFormat.QR_CODE);
|
||||||
|
//supportedBarcodeFormats.Add(BarcodeFormat.DATA_MATRIX);
|
||||||
|
//_bcReader.PossibleFormats = supportedBarcodeFormats;
|
||||||
|
|
||||||
|
barcodeReader.Options.TryHarder = true;
|
||||||
|
|
||||||
|
barcodeReader.ResultFound += OnBarcodeResultFound;
|
||||||
|
scanTimer.Start();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Dispatcher.BeginInvoke(() =>
|
||||||
|
{
|
||||||
|
BarcodeScannerPlugin.OnScanFailed("Unable to initialize the camera");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnBarcodeResultFound(Result obj)
|
||||||
|
{
|
||||||
|
if (BarcodeIsValid(obj.Text))
|
||||||
|
{
|
||||||
|
var barcodeScannerResult = new BarcodeScannerResult();
|
||||||
|
barcodeScannerResult.format = obj.BarcodeFormat.ToString();
|
||||||
|
barcodeScannerResult.text = obj.Text;
|
||||||
|
scanSucceeded = true;
|
||||||
|
|
||||||
|
BarcodeScannerPlugin.OnScanSucceeded(barcodeScannerResult);
|
||||||
|
NavigationService.GoBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool BarcodeIsValid(string barcode)
|
||||||
|
{
|
||||||
|
if (barcode.Equals(scannedCode))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ScanForBarcode()
|
||||||
|
{
|
||||||
|
//grab a camera snapshot
|
||||||
|
phoneCamera.GetPreviewBufferArgb32(previewBuffer.Pixels);
|
||||||
|
previewBuffer.Invalidate();
|
||||||
|
|
||||||
|
//scan the captured snapshot for barcodes
|
||||||
|
//if a barcode is found, the ResultFound event will fire
|
||||||
|
barcodeReader.Decode(previewBuffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
* Copyright (c) 2011, IBM Corporation
|
* Copyright (c) 2011, IBM Corporation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var ScannerLoader = function (require, exports, module) {
|
||||||
|
|
||||||
var exec = require("cordova/exec");
|
var exec = require("cordova/exec");
|
||||||
|
|
||||||
@@ -85,3 +86,12 @@
|
|||||||
var barcodeScanner = new BarcodeScanner();
|
var barcodeScanner = new BarcodeScanner();
|
||||||
module.exports = barcodeScanner;
|
module.exports = barcodeScanner;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ScannerLoader(require, exports, module);
|
||||||
|
|
||||||
|
cordova.define("cordova/plugin/BarcodeScanner", ScannerLoader);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user