智能工厂.apk(点击下载) / ZBar.java


package org.cloudsky.cordovaPlugins;

import android.content.Intent;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class ZBar extends CordovaPlugin {
    private static int SCAN_CODE = 1;
    private boolean isInProgress = false;
    private CallbackContext scanCallbackContext;

    @Override // org.apache.cordova.CordovaPlugin
    public boolean execute(String str, JSONArray jSONArray, CallbackContext callbackContext) throws JSONException {
        if (!str.equals("scan")) {
            return false;
        }
        if (this.isInProgress) {
            callbackContext.error("A scan is already in progress!");
        } else {
            this.isInProgress = true;
            this.scanCallbackContext = callbackContext;
            JSONObject optJSONObject = jSONArray.optJSONObject(0);
            Intent intent = new Intent(this.f0cordova.getActivity().getApplicationContext(), ZBarScannerActivity.class);
            intent.putExtra("params", optJSONObject.toString());
            this.f0cordova.startActivityForResult(this, intent, SCAN_CODE);
        }
        return true;
    }

    @Override // org.apache.cordova.CordovaPlugin
    public void onActivityResult(int i, int i2, Intent intent) {
        if (i == SCAN_CODE) {
            if (i2 != 2) {
                switch (i2) {
                    case -1:
                        this.scanCallbackContext.success(intent.getStringExtra(ZBarScannerActivity.EXTRA_QRVALUE));
                        break;
                    case 0:
                        this.scanCallbackContext.error("cancelled");
                        break;
                    default:
                        this.scanCallbackContext.error("Unknown error");
                        break;
                }
            } else {
                this.scanCallbackContext.error("Scan failed due to an error");
            }
            this.isInProgress = false;
            this.scanCallbackContext = null;
        }
    }
}