Added initial Android implementation (with plugin.xml and JS interface)
This commit is contained in:
76
android/ZBar.java
Normal file
76
android/ZBar.java
Normal file
@@ -0,0 +1,76 @@
|
||||
package org.cloudsky.cordovaPlugins;
|
||||
|
||||
import org.apache.cordova.CordovaInterface;
|
||||
import org.apache.cordova.CordovaPlugin;
|
||||
import org.apache.cordova.CallbackContext;
|
||||
import org.apache.cordova.PluginResult;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.Context;
|
||||
|
||||
import org.cloudsky.cordovaPlugins.ZBarScannerActivity;
|
||||
|
||||
public class ZBar extends CordovaPlugin {
|
||||
|
||||
// Configuration ---------------------------------------------------
|
||||
|
||||
private static int SCAN_CODE = 1;
|
||||
|
||||
|
||||
// State -----------------------------------------------------------
|
||||
|
||||
private boolean isInProgress = false;
|
||||
private CallbackContext scanCallbackContext;
|
||||
|
||||
|
||||
// Plugin API ------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public boolean execute (String action, JSONArray args, CallbackContext callbackContext)
|
||||
throws JSONException
|
||||
{
|
||||
if(action.equals("scan")) {
|
||||
if(isInProgress) {
|
||||
callbackContext.error("A scan is already in progress!");
|
||||
} else {
|
||||
isInProgress = true;
|
||||
scanCallbackContext = callbackContext;
|
||||
Context appCtx = cordova.getActivity().getApplicationContext();
|
||||
Intent scanIntent = new Intent(appCtx, ZBarScannerActivity.class);
|
||||
cordova.startActivityForResult(this, scanIntent, SCAN_CODE);
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// External results handler ----------------------------------------
|
||||
|
||||
@Override
|
||||
public void onActivityResult (int requestCode, int resultCode, Intent result)
|
||||
{
|
||||
if(requestCode == SCAN_CODE) {
|
||||
switch(resultCode) {
|
||||
case Activity.RESULT_OK:
|
||||
String barcodeValue = result.getStringExtra(ZBarScannerActivity.EXTRA_QRVALUE);
|
||||
scanCallbackContext.success(barcodeValue);
|
||||
break;
|
||||
case Activity.RESULT_CANCELED:
|
||||
scanCallbackContext.error("cancelled");
|
||||
break;
|
||||
case ZBarScannerActivity.RESULT_ERROR:
|
||||
scanCallbackContext.error("Scan failed due to an error");
|
||||
break;
|
||||
default:
|
||||
scanCallbackContext.error("Unknown error");
|
||||
}
|
||||
isInProgress = false;
|
||||
scanCallbackContext = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user