初始化插件
This commit is contained in:
commit
cdf0fb9023
11
package.json
Normal file
11
package.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "ubxredscan",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "ubx redscan",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": ""
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
19
plugin.xml
Normal file
19
plugin.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<plugin id="cordova-plugin-ubx-redscan" version="1.0.0"
|
||||||
|
xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<name>ubxredscan</name>
|
||||||
|
<js-module name="ubxredscan" src="www/ubxredscan.js">
|
||||||
|
<clobbers target="cordova.plugins.ubxredscan" />
|
||||||
|
</js-module>
|
||||||
|
<platform name="android">
|
||||||
|
<config-file parent="/*" target="res/xml/config.xml">
|
||||||
|
<feature name="ubxredscan">
|
||||||
|
<param name="android-package" value="cordova.plugin.ubx.redscan.ubxredscan" />
|
||||||
|
</feature>
|
||||||
|
</config-file>
|
||||||
|
<config-file parent="/*" target="AndroidManifest.xml"></config-file>
|
||||||
|
<lib-file src="src/android/platform_sdk_v4.1.0326.jar"/>
|
||||||
|
<source-file src="src/android/ubxredscan.java" target-dir="src/cordova/plugin/ubx/redscan" />
|
||||||
|
</platform>
|
||||||
|
</plugin>
|
3
src/android/build.gradle
Normal file
3
src/android/build.gradle
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
dependencies {
|
||||||
|
implementation files('libs/platform_sdk_v4.1.0326.jar')
|
||||||
|
}
|
BIN
src/android/platform_sdk_v4.1.0326.jar
Normal file
BIN
src/android/platform_sdk_v4.1.0326.jar
Normal file
Binary file not shown.
247
src/android/ubxredscan.java
Normal file
247
src/android/ubxredscan.java
Normal file
@ -0,0 +1,247 @@
|
|||||||
|
package cordova.plugin.ubx.redscan;
|
||||||
|
import static com.ubx.usdk.util.ConvertUtils.bytesToHexString;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
|
import android.device.scanner.configuration.PropertyID;
|
||||||
|
import android.device.scanner.configuration.Symbology;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.BitmapFactory;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Message;
|
||||||
|
import android.preference.CheckBoxPreference;
|
||||||
|
import android.preference.EditTextPreference;
|
||||||
|
import android.preference.ListPreference;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.Toast;
|
||||||
|
import android.device.ScanManager;
|
||||||
|
import org.apache.cordova.CordovaPlugin;
|
||||||
|
import org.apache.cordova.CallbackContext;
|
||||||
|
import org.apache.cordova.PluginResult;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class echoes a string called from JavaScript.
|
||||||
|
*/
|
||||||
|
public class ubxredscan extends CordovaPlugin {
|
||||||
|
private static final String TAG = "ScanManager";
|
||||||
|
|
||||||
|
private static final String ACTION_DECODE = ScanManager.ACTION_DECODE; // default action
|
||||||
|
private static final String ACTION_DECODE_IMAGE_REQUEST = "action.scanner_capture_image";
|
||||||
|
private static final String ACTION_CAPTURE_IMAGE = "scanner_capture_image_result";
|
||||||
|
private static final String BARCODE_LENGTH_TAG = ScanManager.BARCODE_LENGTH_TAG;
|
||||||
|
private static final String DECODE_DATA_TAG = ScanManager.DECODE_DATA_TAG;
|
||||||
|
|
||||||
|
private ScanManager mScanManager = null;
|
||||||
|
private static boolean mScanEnable = true;
|
||||||
|
private static boolean mScanCaptureImageShow = false;
|
||||||
|
|
||||||
|
private static final int[] SCAN_KEYCODE = {520, 521, 522, 523};
|
||||||
|
private CallbackContext callbackContext;
|
||||||
|
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
try{
|
||||||
|
String action = intent.getAction();
|
||||||
|
LogI("onReceive , action:" + action);
|
||||||
|
byte[] barcode = intent.getByteArrayExtra(DECODE_DATA_TAG);
|
||||||
|
int barcodeLen = intent.getIntExtra(BARCODE_LENGTH_TAG, 0);
|
||||||
|
if (mScanCaptureImageShow) {
|
||||||
|
context.sendBroadcast(new Intent(ACTION_DECODE_IMAGE_REQUEST));
|
||||||
|
}
|
||||||
|
String scanResult = new String(barcode, 0, barcodeLen);
|
||||||
|
JSONObject content = new JSONObject();
|
||||||
|
content.put("result", scanResult);
|
||||||
|
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK,content);
|
||||||
|
pluginResult.setKeepCallback(false); // Keep callback
|
||||||
|
callbackContext.sendPluginResult(pluginResult);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
Log.w(TAG, e);
|
||||||
|
callbackContext.error(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
|
||||||
|
if (action.equals("initredscan")) {
|
||||||
|
this.initScan(callbackContext);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (action.equals("startredscan")) {
|
||||||
|
this.startDecode(callbackContext);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (action.equals("stopredscan")) {
|
||||||
|
this.stopDecode(callbackContext);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (action.equals("closeScanner")) {
|
||||||
|
this.closeScanner(callbackContext);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (action.equals("lockTrigger")) {
|
||||||
|
this.lockTrigger(callbackContext);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (action.equals("unlockTrigger")) {
|
||||||
|
this.unlockTrigger(callbackContext);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (action.equals("resetScannerParameters")) {
|
||||||
|
this.resetScannerParameters(callbackContext);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
if (mScanManager != null) {
|
||||||
|
mScanManager = null;
|
||||||
|
}
|
||||||
|
cordova.getContext().unregisterReceiver(mReceiver);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initScan(CallbackContext callbackContext) {
|
||||||
|
JSONObject content = new JSONObject();
|
||||||
|
try {
|
||||||
|
mScanManager = new ScanManager();
|
||||||
|
boolean powerOn = mScanManager.getScannerState();
|
||||||
|
if (!powerOn) {
|
||||||
|
powerOn = mScanManager.openScanner();
|
||||||
|
|
||||||
|
if (!powerOn) {
|
||||||
|
content.put("result", "init fail");
|
||||||
|
PluginResult pluginResult = new PluginResult(PluginResult.Status.ERROR,content);
|
||||||
|
pluginResult.setKeepCallback(false); // Keep callback
|
||||||
|
callbackContext.sendPluginResult(pluginResult);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mScanManager.switchOutputMode(0);
|
||||||
|
IntentFilter filter = new IntentFilter();
|
||||||
|
int[] idbuf = new int[]{PropertyID.WEDGE_INTENT_ACTION_NAME, PropertyID.WEDGE_INTENT_DATA_STRING_TAG};
|
||||||
|
String[] value_buf = mScanManager.getParameterString(idbuf);
|
||||||
|
if (value_buf != null && value_buf[0] != null && !value_buf[0].equals("")) {
|
||||||
|
filter.addAction(value_buf[0]);
|
||||||
|
} else {
|
||||||
|
filter.addAction(ACTION_DECODE);
|
||||||
|
}
|
||||||
|
filter.addAction(ACTION_CAPTURE_IMAGE);
|
||||||
|
cordova.getContext().registerReceiver(mReceiver , filter);
|
||||||
|
content.put("result", "init success");
|
||||||
|
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK,content);
|
||||||
|
pluginResult.setKeepCallback(false); // Keep callback
|
||||||
|
callbackContext.sendPluginResult(pluginResult);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
Log.w(TAG, e);
|
||||||
|
callbackContext.error(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startDecode(CallbackContext callbackContext) {
|
||||||
|
if (!mScanEnable) {
|
||||||
|
LogI("startDecode ignore, Scan enable:" + mScanEnable);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boolean lockState = getlockTriggerState();
|
||||||
|
if (lockState) {
|
||||||
|
LogI("startDecode ignore, Scan lockTrigger state:" + lockState);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mScanManager != null) {
|
||||||
|
this.callbackContext = callbackContext;
|
||||||
|
mScanManager.openScanner();
|
||||||
|
mScanManager.startDecode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void stopDecode(CallbackContext callbackContext) {
|
||||||
|
if (!mScanEnable) {
|
||||||
|
LogI("stopDecode ignore, Scan enable:" + mScanEnable);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mScanManager != null) {
|
||||||
|
mScanManager.stopDecode();
|
||||||
|
callbackContext.success("OK");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void closeScanner(CallbackContext callbackContext) {
|
||||||
|
if (!mScanEnable) {
|
||||||
|
LogI("stopDecode ignore, Scan enable:" + mScanEnable);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mScanManager != null) {
|
||||||
|
mScanManager.closeScanner();
|
||||||
|
callbackContext.success("OK");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lockTrigger(CallbackContext callbackContext) {
|
||||||
|
if (!mScanEnable) {
|
||||||
|
LogI("stopDecode ignore, Scan enable:" + mScanEnable);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mScanManager != null) {
|
||||||
|
mScanManager.lockTrigger();
|
||||||
|
callbackContext.success("OK");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void unlockTrigger(CallbackContext callbackContext) {
|
||||||
|
if (!mScanEnable) {
|
||||||
|
LogI("stopDecode ignore, Scan enable:" + mScanEnable);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mScanManager != null) {
|
||||||
|
mScanManager.unlockTrigger();
|
||||||
|
callbackContext.success("OK");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetScannerParameters(CallbackContext callbackContext) {
|
||||||
|
if (!mScanEnable) {
|
||||||
|
LogI("stopDecode ignore, Scan enable:" + mScanEnable);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mScanManager != null) {
|
||||||
|
mScanManager.resetScannerParameters();
|
||||||
|
callbackContext.success("OK");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean getlockTriggerState() {
|
||||||
|
boolean state = mScanManager.getTriggerLockState();
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LogI(String msg) {
|
||||||
|
android.util.Log.i(TAG, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
27
www/ubxredscan.js
Normal file
27
www/ubxredscan.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
var exec = require('cordova/exec');
|
||||||
|
|
||||||
|
exports.startredscan = function(success, error) {
|
||||||
|
exec(success, error, "ubxredscan", "startredscan", []);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.stopredscan = function(success, error) {
|
||||||
|
exec(success, error, "ubxredscan", "stopredscan", []);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.initredscan = function(success, error) {
|
||||||
|
exec(success, error, "ubxredscan", "initredscan", []);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.closeScanner = function(success, error) {
|
||||||
|
exec(success, error, "ubxredscan", "closeScanner", []);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.lockTrigger = function(success, error) {
|
||||||
|
exec(success, error, "ubxredscan", "lockTrigger", []);
|
||||||
|
};
|
||||||
|
exports.unlockTrigger = function(success, error) {
|
||||||
|
exec(success, error, "ubxredscan", "unlockTrigger", []);
|
||||||
|
};
|
||||||
|
exports.resetScannerParameters = function(success, error) {
|
||||||
|
exec(success, error, "ubxredscan", "resetScannerParameters", []);
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user