Commit 31d3a16f by Alberto Doval

Added initialize method to BaseScan class.

Refactored EDA500K implementation.
parent 63828a3b
...@@ -28,6 +28,10 @@ ...@@ -28,6 +28,10 @@
<param name="onload" value="true" /> <param name="onload" value="true" />
</feature> </feature>
</config-file> </config-file>
<config-file target="AndroidManifest.xml" parent="/manifest">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="com.honeywell.decode.permission.DECODE" />
</config-file>
<source-file src="src/android/com/cocodin/barcodescan/plugin/BarcodeScan.java" target-dir="src/com/cocodin/barcodescan/plugin" /> <source-file src="src/android/com/cocodin/barcodescan/plugin/BarcodeScan.java" target-dir="src/com/cocodin/barcodescan/plugin" />
<source-file src="src/android/com/cocodin/barcodescan/plugin/BaseScan.java" target-dir="src/com/cocodin/barcodescan/plugin" /> <source-file src="src/android/com/cocodin/barcodescan/plugin/BaseScan.java" target-dir="src/com/cocodin/barcodescan/plugin" />
......
...@@ -13,6 +13,10 @@ import org.apache.cordova.PluginResult; ...@@ -13,6 +13,10 @@ import org.apache.cordova.PluginResult;
import org.apache.cordova.PluginResult.Status; import org.apache.cordova.PluginResult.Status;
import org.json.JSONArray; import org.json.JSONArray;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import static android.R.attr.action;
public class BarcodeScan extends CordovaPlugin { public class BarcodeScan extends CordovaPlugin {
...@@ -30,14 +34,46 @@ public class BarcodeScan extends CordovaPlugin { ...@@ -30,14 +34,46 @@ public class BarcodeScan extends CordovaPlugin {
private BaseScan mDevice; private BaseScan mDevice;
public void initialize(CordovaInterface cordova, CordovaWebView webView) { private Map<String, BaseScan> mDevices = new HashMap<String, BaseScan>();
public void initialize(final CordovaInterface cordova, final CordovaWebView webView) {
super.initialize(cordova, webView); super.initialize(cordova, webView);
cordova.getThreadPool().execute(new Runnable() {
@Override
public void run() {
init(cordova, webView);
}
});
Log.d(TAG, "Initializing BarcodeScan Plugin"); Log.d(TAG, "Initializing BarcodeScan Plugin");
} }
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) { public void init(CordovaInterface cordova, CordovaWebView webView) {
for (int i=0;i<jaDevices.length();i++) {
try {
String deviceName = jaDevices.getString(i);
if (EDA50K.equalsIgnoreCase(deviceName)) {
mDevices.put(EDA50K, new com.cocodin.barcodescan.plugin.devices.EDA50K(cordova, webView));
} else if (C4050.equalsIgnoreCase(deviceName)) {
mDevices.put(C4050, new com.cocodin.barcodescan.plugin.devices.C4050(cordova, webView));
} else if (NQUIRE300.equalsIgnoreCase(deviceName)) {
mDevices.put(NQUIRE300, new com.cocodin.barcodescan.plugin.devices.NQuire300(cordova, webView));
} else {
mDevices.put(CAMERA, new com.cocodin.barcodescan.plugin.devices.Camera(cordova, webView));
}
}
catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
}
public boolean execute(final String action, final JSONArray args, final CallbackContext callbackContext) {
Log.d(TAG, "execute: " + action); Log.d(TAG, "execute: " + action);
if (action.equalsIgnoreCase("scan")) { if (action.equalsIgnoreCase("scan")) {
cordova.getThreadPool().execute(new Runnable() {
@Override
public void run() {
try { try {
String deviceName = args.get(0).toString(); String deviceName = args.get(0).toString();
//ensure device is created and is the correct device (user could change the device in mobile UI) //ensure device is created and is the correct device (user could change the device in mobile UI)
...@@ -45,31 +81,22 @@ public class BarcodeScan extends CordovaPlugin { ...@@ -45,31 +81,22 @@ public class BarcodeScan extends CordovaPlugin {
mDevice = selectDevice(deviceName); mDevice = selectDevice(deviceName);
} }
mDevice.scan(cordova, webView, args, callbackContext); mDevice.scan(cordova, webView, args, callbackContext);
} } catch (Exception e) {
catch (Exception e) {
Log.e(TAG, e.getMessage()); Log.e(TAG, e.getMessage());
callbackContext.sendPluginResult(new PluginResult(Status.ERROR, e.getMessage())); callbackContext.sendPluginResult(new PluginResult(Status.ERROR, e.getMessage()));
} }
} else if (action.equalsIgnoreCase("getDevices")) { }
});
}
else if (action.equalsIgnoreCase("getDevices")) {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, jaDevices)); callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, jaDevices));
} }
return true; return true;
} }
public BaseScan selectDevice(String deviceName) { public BaseScan selectDevice(String deviceName) {
if (EDA50K.equalsIgnoreCase(deviceName)) { return mDevices.get(deviceName);
return new com.cocodin.barcodescan.plugin.devices.EDA50K();
}
else if (C4050.equalsIgnoreCase(deviceName)) {
return new com.cocodin.barcodescan.plugin.devices.C4050();
}
else if (NQUIRE300.equalsIgnoreCase(deviceName)) {
return new com.cocodin.barcodescan.plugin.devices.NQuire300();
}
else {
return new com.cocodin.barcodescan.plugin.devices.Camera();
}
} }
@Override @Override
......
...@@ -11,6 +11,12 @@ import org.json.JSONArray; ...@@ -11,6 +11,12 @@ import org.json.JSONArray;
public abstract class BaseScan { public abstract class BaseScan {
public BaseScan(CordovaInterface cordova, CordovaWebView webView) {
};
public abstract void initialize(CordovaInterface cordova, CordovaWebView webView);
public abstract String getDeviceName(); public abstract String getDeviceName();
public abstract void scan(final CordovaInterface cordova, CordovaWebView webView, JSONArray args, final CallbackContext callbackContext); public abstract void scan(final CordovaInterface cordova, CordovaWebView webView, JSONArray args, final CallbackContext callbackContext);
......
...@@ -26,6 +26,16 @@ public class C4050 extends BaseScan { ...@@ -26,6 +26,16 @@ public class C4050 extends BaseScan {
private static Barcode2DWithSoft mInstance; private static Barcode2DWithSoft mInstance;
public C4050(CordovaInterface cordova, CordovaWebView webView) {
super(cordova, webView);
initialize(cordova, webView);
}
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
}
@Override @Override
public String getDeviceName() { public String getDeviceName() {
return TAG; return TAG;
......
...@@ -20,6 +20,17 @@ public class Camera extends BaseScan { ...@@ -20,6 +20,17 @@ public class Camera extends BaseScan {
public String getDeviceName() { public String getDeviceName() {
return TAG; return TAG;
} }
public Camera(CordovaInterface cordova, CordovaWebView webView) {
super(cordova, webView);
initialize(cordova, webView);
}
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
}
@Override @Override
public void scan(CordovaInterface cordova, CordovaWebView webView, JSONArray args, CallbackContext callbackContext) { public void scan(CordovaInterface cordova, CordovaWebView webView, JSONArray args, CallbackContext callbackContext) {
BarcodeScanner barcodeScanner = new BarcodeScanner(); BarcodeScanner barcodeScanner = new BarcodeScanner();
......
...@@ -36,21 +36,24 @@ public class EDA50K extends BaseScan implements BarcodeListener { ...@@ -36,21 +36,24 @@ public class EDA50K extends BaseScan implements BarcodeListener {
private CallbackContext currentCallbackContext = null; private CallbackContext currentCallbackContext = null;
public EDA50K(CordovaInterface cordova, CordovaWebView webView) {
super(cordova, webView);
initialize(cordova, webView);
}
@Override @Override
public String getDeviceName() { public String getDeviceName() {
return TAG; return TAG;
} }
@Override public void initialize(final CordovaInterface cordova, CordovaWebView webView) {
public void scan(final CordovaInterface cordova, CordovaWebView webView, JSONArray args,
final CallbackContext callbackContext) {
if (manager == null) { if (manager == null) {
AidcManager.create(cordova.getActivity(), new CreatedCallback() { AidcManager.create(cordova.getActivity(), new CreatedCallback() {
@Override @Override
public void onCreated(AidcManager aidcManager) { public void onCreated(AidcManager aidcManager) {
manager = aidcManager; manager = aidcManager;
barcodeReader = manager.createBarcodeReader("dcs.scanner.ring"); barcodeReader = manager.createBarcodeReader();
if (barcodeReader != null) { if (barcodeReader != null) {
...@@ -97,19 +100,20 @@ public class EDA50K extends BaseScan implements BarcodeListener { ...@@ -97,19 +100,20 @@ public class EDA50K extends BaseScan implements BarcodeListener {
barcodeReader.setProperties(properties); barcodeReader.setProperties(properties);
//Perform first read after initialization //Perform first read after initialization
readBarcode(callbackContext); claim();
} else { };
callbackContext.error("Failed to open barcode reader");
}
} }
}); });
} else {
readBarcode(callbackContext);
} }
} }
@Override @Override
public void scan(final CordovaInterface cordova, CordovaWebView webView, JSONArray args, final CallbackContext callbackContext) {
this.currentCallbackContext = callbackContext;
}
@Override
public void onStart() { public void onStart() {
} }
...@@ -139,18 +143,16 @@ public class EDA50K extends BaseScan implements BarcodeListener { ...@@ -139,18 +143,16 @@ public class EDA50K extends BaseScan implements BarcodeListener {
} }
} }
private void readBarcode(CallbackContext callbackContext) { private void claim() {
if (barcodeReader != null) { if (barcodeReader != null) {
try { try {
barcodeReader.claim(); barcodeReader.claim();
Log.d(TAG, "Claim OK");
callbackContext.success();
} catch (ScannerUnavailableException e) { } catch (ScannerUnavailableException e) {
e.printStackTrace(); Log.e(TAG, e.getMessage());
callbackContext.error("Unable to claim reader");
} }
} else { } else {
callbackContext.error("Reader not open"); Log.e(TAG, "Barcode reader not opened");
} }
} }
...@@ -176,9 +178,7 @@ public class EDA50K extends BaseScan implements BarcodeListener { ...@@ -176,9 +178,7 @@ public class EDA50K extends BaseScan implements BarcodeListener {
if (currentCallbackContext != null) { if (currentCallbackContext != null) {
try { try {
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
obj.put("success", true); obj.put("text", barcodeReadEvent.getBarcodeData());
obj.put("data", barcodeReadEvent.getBarcodeData());
PluginResult result = new PluginResult(PluginResult.Status.OK, obj); PluginResult result = new PluginResult(PluginResult.Status.OK, obj);
result.setKeepCallback(true); result.setKeepCallback(true);
currentCallbackContext.sendPluginResult(result); currentCallbackContext.sendPluginResult(result);
...@@ -190,6 +190,7 @@ public class EDA50K extends BaseScan implements BarcodeListener { ...@@ -190,6 +190,7 @@ public class EDA50K extends BaseScan implements BarcodeListener {
@Override @Override
public void onFailureEvent(BarcodeFailureEvent barcodeFailureEvent) { public void onFailureEvent(BarcodeFailureEvent barcodeFailureEvent) {
Log.i(TAG, "Error reading barcode.");
if (currentCallbackContext != null) { if (currentCallbackContext != null) {
try { try {
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
......
...@@ -28,6 +28,16 @@ public class NQuire300 extends BaseScan { ...@@ -28,6 +28,16 @@ public class NQuire300 extends BaseScan {
return TAG; return TAG;
} }
public NQuire300(CordovaInterface cordova, CordovaWebView webView) {
super(cordova, webView);
initialize(cordova, webView);
}
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
}
@Override @Override
public void scan(CordovaInterface cordova, CordovaWebView webView, JSONArray args, CallbackContext callbackContext) { public void scan(CordovaInterface cordova, CordovaWebView webView, JSONArray args, CallbackContext callbackContext) {
Context context = cordova.getActivity(); Context context = cordova.getActivity();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment