Skip to content

Commit b49c86d

Browse files
committed
Added options for camera analysis intervals
1 parent 84ade71 commit b49c86d

9 files changed

+30
-9
lines changed

Details.md

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@ ZXing.Net.Mobile is a C#/.NET library based on the open source Barcode Library:
22

33
GitHub Project: https://github.com/Redth/ZXing.Net.Mobile
44

5+
### Changes
6+
- v1.3.3
7+
- Fixed Android not scanning some barcodes in Portrait
8+
- Fixed Android scanning very slowly
9+
- Added to MobileBarcodeScanningOptions: IntervalBetweenAnalyzingFrames to configure how 'fast' frames from the live scanner view are analyzed in an attempt to decode barcodes
10+
11+
512
### Usage
613
```csharp
714
buttonScan.Click += (sender, e) => {

src/ZXing.Net.Mobile/Mono/MobileBarcodeScanningOptions.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ public class MobileBarcodeScanningOptions
1010
public MobileBarcodeScanningOptions ()
1111
{
1212
this.PossibleFormats = new List<BarcodeFormat>();
13-
13+
this.DelayBetweenAnalyzingFrames = 150;
14+
this.InitialDelayBeforeAnalyzingFrames = 300;
1415
}
1516

1617
public List<BarcodeFormat> PossibleFormats { get;set; }
@@ -19,6 +20,9 @@ public MobileBarcodeScanningOptions ()
1920
public bool? AutoRotate { get;set; }
2021
public string CharacterSet { get;set; }
2122

23+
public int DelayBetweenAnalyzingFrames { get;set;}
24+
public int InitialDelayBeforeAnalyzingFrames { get;set; }
25+
2226
public static MobileBarcodeScanningOptions Default
2327
{
2428
get { return new MobileBarcodeScanningOptions(); }

src/ZXing.Net.Mobile/MonoForAndroid/ZxingActivity.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ public ZxingSurfaceView (ZxingActivity activity, MobileBarcodeScanningOptions op
176176
screenResolution = new Size(this.activity.WindowManager.DefaultDisplay.Width, this.activity.WindowManager.DefaultDisplay.Height);
177177

178178
this.options = options;
179-
179+
lastPreviewAnalysis = DateTime.Now.AddMilliseconds(options.InitialDelayBeforeAnalyzingFrames);
180180

181181
this.reader = this.options.BuildMultiFormatReader();
182182

@@ -259,11 +259,11 @@ public void SurfaceDestroyed (ISurfaceHolder holder)
259259
ShutdownCamera ();
260260
}
261261

262-
DateTime lastPreviewAnalysis = DateTime.Now.AddMilliseconds(250);
262+
DateTime lastPreviewAnalysis = DateTime.Now;
263263

264264
public void OnPreviewFrame (byte [] bytes, Android.Hardware.Camera camera)
265265
{
266-
if ((DateTime.Now - lastPreviewAnalysis).TotalMilliseconds < 250)
266+
if ((DateTime.Now - lastPreviewAnalysis).TotalMilliseconds < options.DelayBetweenAnalyzingFrames)
267267
return;
268268

269269
try

src/ZXing.Net.Mobile/MonoTouch/ZxingSurfaceView.cs

+11-2
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,8 @@ private void Worker()
450450
451451
if (animated) UIView.CommitAnimations();
452452
}*/
453+
454+
bool firstTimeWorker = true;
453455

454456
public void StartWorker()
455457
{
@@ -458,9 +460,16 @@ public void StartWorker()
458460
{
459461
return;
460462
}
463+
464+
var delay = TimeSpan.FromMilliseconds(_parentViewController.ScanningOptions.DelayBetweenAnalyzingFrames);
465+
466+
if (firstTimeWorker)
467+
{
468+
delay = TimeSpan.FromMilliseconds(_parentViewController.ScanningOptions.InitialDelayBeforeAnalyzingFrames);
469+
firstTimeWorker = false;
470+
}
461471

462-
463-
WorkerTimer = NSTimer.CreateRepeatingTimer(TimeSpan.FromMilliseconds(150), delegate {
472+
WorkerTimer = NSTimer.CreateRepeatingTimer(delay, delegate {
464473
Worker();
465474
});
466475
NSRunLoop.Current.AddTimer(WorkerTimer, NSRunLoopMode.Default);

src/ZXing.Net.Mobile/Properties/AssemblyVersionInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
// You can specify all the values or you can default the Build and Revision Numbers
1313
// by using the '*' as shown below:
1414
// [assembly: AssemblyVersion("1.0.*")]
15-
[assembly: AssemblyVersion("1.3.2.0")]
16-
[assembly: AssemblyFileVersion("1.3.2.0")]
15+
[assembly: AssemblyVersion("1.3.3.0")]
16+
[assembly: AssemblyFileVersion("1.3.3.0")]

src/ZXing.Net.Mobile/WindowsPhone/ScanPage.xaml.cs

+1
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ protected override void OnNavigatedTo(NavigationEventArgs e)
101101

102102
// Initialize a new instance of SimpleCameraReader with Auto-Focus mode on
103103
_reader = new SimpleCameraReader(Scanner, ScanningOptions);
104+
_reader.ScanInterval = ScanningOptions.DelayBetweenAnalyzingFrames;
104105

105106
OnRequestAutoFocus += () =>
106107
{

src/ZXing.Net.Mobile/WindowsPhone/SimpleCameraReader.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public double ScanInterval
5555
{
5656
get
5757
{
58-
return _scanInterval.TotalMilliseconds <= 0 ? _scanInterval.TotalMilliseconds : 250;
58+
return _scanInterval.TotalMilliseconds <= 0 ? _scanInterval.TotalMilliseconds : 150;
5959
}
6060
set
6161
{
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)