Merge pull request #16 from nickgerman/master
Added continuous autofocus on Android if the API Level supports it + added explicit enabling of all ZBar barcode formats
This commit is contained in:
commit
d4d062cccc
72
android/BarcodeFormat.java
Normal file
72
android/BarcodeFormat.java
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
package org.cloudsky.cordovaPlugins;
|
||||||
|
|
||||||
|
import net.sourceforge.zbar.Symbol;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class BarcodeFormat {
|
||||||
|
private int mId;
|
||||||
|
private String mName;
|
||||||
|
|
||||||
|
public static final BarcodeFormat NONE = new BarcodeFormat(Symbol.NONE, "NONE");
|
||||||
|
public static final BarcodeFormat PARTIAL = new BarcodeFormat(Symbol.PARTIAL, "PARTIAL");
|
||||||
|
public static final BarcodeFormat EAN8 = new BarcodeFormat(Symbol.EAN8, "EAN8");
|
||||||
|
public static final BarcodeFormat UPCE = new BarcodeFormat(Symbol.UPCE, "UPCE");
|
||||||
|
public static final BarcodeFormat ISBN10 = new BarcodeFormat(Symbol.ISBN10, "ISBN10");
|
||||||
|
public static final BarcodeFormat UPCA = new BarcodeFormat(Symbol.UPCA, "UPCA");
|
||||||
|
public static final BarcodeFormat EAN13 = new BarcodeFormat(Symbol.EAN13, "EAN13");
|
||||||
|
public static final BarcodeFormat ISBN13 = new BarcodeFormat(Symbol.ISBN13, "ISBN13");
|
||||||
|
public static final BarcodeFormat I25 = new BarcodeFormat(Symbol.I25, "I25");
|
||||||
|
public static final BarcodeFormat DATABAR = new BarcodeFormat(Symbol.DATABAR, "DATABAR");
|
||||||
|
public static final BarcodeFormat DATABAR_EXP = new BarcodeFormat(Symbol.DATABAR_EXP, "DATABAR_EXP");
|
||||||
|
public static final BarcodeFormat CODABAR = new BarcodeFormat(Symbol.CODABAR, "CODABAR");
|
||||||
|
public static final BarcodeFormat CODE39 = new BarcodeFormat(Symbol.CODE39, "CODE39");
|
||||||
|
public static final BarcodeFormat PDF417 = new BarcodeFormat(Symbol.PDF417, "PDF417");
|
||||||
|
public static final BarcodeFormat QRCODE = new BarcodeFormat(Symbol.QRCODE, "QRCODE");
|
||||||
|
public static final BarcodeFormat CODE93 = new BarcodeFormat(Symbol.CODE93, "CODE93");
|
||||||
|
public static final BarcodeFormat CODE128 = new BarcodeFormat(Symbol.CODE128, "CODE128");
|
||||||
|
|
||||||
|
public static final List<BarcodeFormat> ALL_FORMATS = new ArrayList<BarcodeFormat>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.PARTIAL);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.EAN8);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.UPCE);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.ISBN10);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.UPCA);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.EAN13);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.ISBN13);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.I25);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.DATABAR);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.DATABAR_EXP);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.CODABAR);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.CODE39);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.PDF417);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.QRCODE);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.CODE93);
|
||||||
|
ALL_FORMATS.add(BarcodeFormat.CODE128);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BarcodeFormat(int id, String name) {
|
||||||
|
mId = id;
|
||||||
|
mName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return mId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return mName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BarcodeFormat getFormatById(int id) {
|
||||||
|
for(BarcodeFormat format : ALL_FORMATS) {
|
||||||
|
if(format.getId() == id) {
|
||||||
|
return format;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return BarcodeFormat.NONE;
|
||||||
|
}
|
||||||
|
}
|
@ -23,6 +23,12 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.EnumMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import net.sourceforge.zbar.ImageScanner;
|
import net.sourceforge.zbar.ImageScanner;
|
||||||
import net.sourceforge.zbar.Image;
|
import net.sourceforge.zbar.Image;
|
||||||
import net.sourceforge.zbar.Symbol;
|
import net.sourceforge.zbar.Symbol;
|
||||||
@ -32,6 +38,9 @@ import net.sourceforge.zbar.Config;
|
|||||||
public class ZBarScannerActivity extends Activity
|
public class ZBarScannerActivity extends Activity
|
||||||
implements SurfaceHolder.Callback {
|
implements SurfaceHolder.Callback {
|
||||||
|
|
||||||
|
//for barcode types
|
||||||
|
private Collection<ZBarcodeFormat> mFormats = null;
|
||||||
|
|
||||||
// Config ----------------------------------------------------------
|
// Config ----------------------------------------------------------
|
||||||
|
|
||||||
private static int autoFocusInterval = 500; // Interval between AFcallback and next AF attempt.
|
private static int autoFocusInterval = 500; // Interval between AFcallback and next AF attempt.
|
||||||
@ -92,6 +101,11 @@ implements SurfaceHolder.Callback {
|
|||||||
scanner = new ImageScanner();
|
scanner = new ImageScanner();
|
||||||
scanner.setConfig(0, Config.X_DENSITY, 3);
|
scanner.setConfig(0, Config.X_DENSITY, 3);
|
||||||
scanner.setConfig(0, Config.Y_DENSITY, 3);
|
scanner.setConfig(0, Config.Y_DENSITY, 3);
|
||||||
|
|
||||||
|
// Set the config for barcode formats
|
||||||
|
for(ZBarcodeFormat format : getFormats()) {
|
||||||
|
scanner.setConfig(format.getId(), Config.ENABLE, 1);
|
||||||
|
}
|
||||||
|
|
||||||
// Set content view
|
// Set content view
|
||||||
setContentView(getResourceId("layout/cszbarscanner"));
|
setContentView(getResourceId("layout/cszbarscanner"));
|
||||||
@ -126,6 +140,7 @@ implements SurfaceHolder.Callback {
|
|||||||
// Add preview SurfaceView to the screen
|
// Add preview SurfaceView to the screen
|
||||||
FrameLayout scannerView = (FrameLayout) findViewById(getResourceId("id/csZbarScannerView"));
|
FrameLayout scannerView = (FrameLayout) findViewById(getResourceId("id/csZbarScannerView"));
|
||||||
scannerView.addView(scannerSurface);
|
scannerView.addView(scannerSurface);
|
||||||
|
|
||||||
findViewById(getResourceId("id/csZbarScannerTitle")).bringToFront();
|
findViewById(getResourceId("id/csZbarScannerTitle")).bringToFront();
|
||||||
findViewById(getResourceId("id/csZbarScannerInstructions")).bringToFront();
|
findViewById(getResourceId("id/csZbarScannerInstructions")).bringToFront();
|
||||||
findViewById(getResourceId("id/csZbarScannerSightContainer")).bringToFront();
|
findViewById(getResourceId("id/csZbarScannerSightContainer")).bringToFront();
|
||||||
@ -170,6 +185,10 @@ implements SurfaceHolder.Callback {
|
|||||||
} else {
|
} else {
|
||||||
camParams.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
|
camParams.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
|
||||||
}
|
}
|
||||||
|
if (android.os.Build.VERSION.SDK_INT >= 14) {
|
||||||
|
camParams.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
|
||||||
|
}
|
||||||
|
|
||||||
try { camera.setParameters(camParams); }
|
try { camera.setParameters(camParams); }
|
||||||
catch (RuntimeException e) {
|
catch (RuntimeException e) {
|
||||||
Log.d("csZBar", "Unsupported camera parameter reported for flash mode: "+flashMode);
|
Log.d("csZBar", "Unsupported camera parameter reported for flash mode: "+flashMode);
|
||||||
@ -347,6 +366,14 @@ implements SurfaceHolder.Callback {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Collection<ZBarcodeFormat> getFormats() {
|
||||||
|
if(mFormats == null) {
|
||||||
|
return ZBarcodeFormat.ALL_FORMATS;
|
||||||
|
}
|
||||||
|
return mFormats;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Start the camera preview if possible.
|
// Start the camera preview if possible.
|
||||||
// If start is attempted but fails, exit with error message.
|
// If start is attempted but fails, exit with error message.
|
||||||
private void tryStartPreview () {
|
private void tryStartPreview () {
|
||||||
@ -358,8 +385,8 @@ implements SurfaceHolder.Callback {
|
|||||||
camera.setPreviewDisplay(holder);
|
camera.setPreviewDisplay(holder);
|
||||||
camera.setPreviewCallback(previewCb);
|
camera.setPreviewCallback(previewCb);
|
||||||
camera.startPreview();
|
camera.startPreview();
|
||||||
camera.autoFocus(autoFocusCb); // We are not using any of the
|
//camera.autoFocus(autoFocusCb); // We are not using any of the
|
||||||
// continuous autofocus modes as that does not seem to work
|
// continuous autofocus modes as that does not seem to work
|
||||||
// well with flash setting of "on"... At least with this
|
// well with flash setting of "on"... At least with this
|
||||||
// simple and stupid focus method, we get to turn the flash
|
// simple and stupid focus method, we get to turn the flash
|
||||||
// on during autofocus.
|
// on during autofocus.
|
||||||
|
72
android/ZBarcodeFormat.java
Normal file
72
android/ZBarcodeFormat.java
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
package org.cloudsky.cordovaPlugins;
|
||||||
|
|
||||||
|
import net.sourceforge.zbar.Symbol;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class ZBarcodeFormat {
|
||||||
|
private int mId;
|
||||||
|
private String mName;
|
||||||
|
|
||||||
|
public static final ZBarcodeFormat NONE = new ZBarcodeFormat(Symbol.NONE, "NONE");
|
||||||
|
public static final ZBarcodeFormat PARTIAL = new ZBarcodeFormat(Symbol.PARTIAL, "PARTIAL");
|
||||||
|
public static final ZBarcodeFormat EAN8 = new ZBarcodeFormat(Symbol.EAN8, "EAN8");
|
||||||
|
public static final ZBarcodeFormat UPCE = new ZBarcodeFormat(Symbol.UPCE, "UPCE");
|
||||||
|
public static final ZBarcodeFormat ISBN10 = new ZBarcodeFormat(Symbol.ISBN10, "ISBN10");
|
||||||
|
public static final ZBarcodeFormat UPCA = new ZBarcodeFormat(Symbol.UPCA, "UPCA");
|
||||||
|
public static final ZBarcodeFormat EAN13 = new ZBarcodeFormat(Symbol.EAN13, "EAN13");
|
||||||
|
public static final ZBarcodeFormat ISBN13 = new ZBarcodeFormat(Symbol.ISBN13, "ISBN13");
|
||||||
|
public static final ZBarcodeFormat I25 = new ZBarcodeFormat(Symbol.I25, "I25");
|
||||||
|
public static final ZBarcodeFormat DATABAR = new ZBarcodeFormat(Symbol.DATABAR, "DATABAR");
|
||||||
|
public static final ZBarcodeFormat DATABAR_EXP = new ZBarcodeFormat(Symbol.DATABAR_EXP, "DATABAR_EXP");
|
||||||
|
public static final ZBarcodeFormat CODABAR = new ZBarcodeFormat(Symbol.CODABAR, "CODABAR");
|
||||||
|
public static final ZBarcodeFormat CODE39 = new ZBarcodeFormat(Symbol.CODE39, "CODE39");
|
||||||
|
public static final ZBarcodeFormat PDF417 = new ZBarcodeFormat(Symbol.PDF417, "PDF417");
|
||||||
|
public static final ZBarcodeFormat QRCODE = new ZBarcodeFormat(Symbol.QRCODE, "QRCODE");
|
||||||
|
public static final ZBarcodeFormat CODE93 = new ZBarcodeFormat(Symbol.CODE93, "CODE93");
|
||||||
|
public static final ZBarcodeFormat CODE128 = new ZBarcodeFormat(Symbol.CODE128, "CODE128");
|
||||||
|
|
||||||
|
public static final List<ZBarcodeFormat> ALL_FORMATS = new ArrayList<ZBarcodeFormat>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.PARTIAL);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.EAN8);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.UPCE);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.ISBN10);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.UPCA);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.EAN13);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.ISBN13);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.I25);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.DATABAR);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.DATABAR_EXP);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.CODABAR);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.CODE39);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.PDF417);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.QRCODE);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.CODE93);
|
||||||
|
ALL_FORMATS.add(ZBarcodeFormat.CODE128);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ZBarcodeFormat(int id, String name) {
|
||||||
|
mId = id;
|
||||||
|
mName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return mId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return mName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ZBarcodeFormat getFormatById(int id) {
|
||||||
|
for(ZBarcodeFormat format : ALL_FORMATS) {
|
||||||
|
if(format.getId() == id) {
|
||||||
|
return format;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ZBarcodeFormat.NONE;
|
||||||
|
}
|
||||||
|
}
|
@ -44,6 +44,7 @@
|
|||||||
<color name="csZbarScannerBackground">#000000</color>
|
<color name="csZbarScannerBackground">#000000</color>
|
||||||
</config-file>
|
</config-file>
|
||||||
<resource-file src="android/res/layout/cszbarscanner.xml" target="res/layout/cszbarscanner.xml" />
|
<resource-file src="android/res/layout/cszbarscanner.xml" target="res/layout/cszbarscanner.xml" />
|
||||||
|
<source-file src="android/ZBarcodeFormat.java" target-dir="src/org/cloudsky/cordovaPlugins" />
|
||||||
<source-file src="android/ZBar.java" target-dir="src/org/cloudsky/cordovaPlugins" />
|
<source-file src="android/ZBar.java" target-dir="src/org/cloudsky/cordovaPlugins" />
|
||||||
<source-file src="android/ZBarScannerActivity.java" target-dir="src/org/cloudsky/cordovaPlugins" />
|
<source-file src="android/ZBarScannerActivity.java" target-dir="src/org/cloudsky/cordovaPlugins" />
|
||||||
<source-file src="android/libs/zbar.jar" target-dir="libs" />
|
<source-file src="android/libs/zbar.jar" target-dir="libs" />
|
||||||
|
Loading…
Reference in New Issue
Block a user