红光扫码插件

This commit is contained in:
2025-06-30 16:07:31 +08:00
commit f57f576cc7
6 changed files with 161 additions and 0 deletions

23
README.md Normal file
View File

@@ -0,0 +1,23 @@
# PDA 红光扫码插件
青春塔项目PDA(AUTOID UTouch X3)设备监听红光扫码插件
使用DEMO:`https://m.shuto.cn:8681/center/uhf-demo.git`
## 安装插件
```
cordova plugin add git+https://m.shuto.cn:8681/center/cordova-plugin-redScanner.git
```
## 引入插件
```
declare const cordova: any;
```
## 方法
```
cordova.plugins.redScanner.scan((code: string) => {
console.log(code);
}, (error: any) => {
console.log(error);
});
```

17
package.json Normal file
View File

@@ -0,0 +1,17 @@
{
"name": "cordova-plugin-redscanner",
"version": "1.0.0",
"description": "redScanner plugin",
"cordova": {
"id": "cordova-plugin-redScanner",
"platforms": [
"android"
]
},
"keywords": [
"cordova",
"plugin"
],
"author": "yc",
"license": "Apache-2.0"
}

28
plugin.xml Normal file
View File

@@ -0,0 +1,28 @@
<?xml version='1.0' encoding='utf-8'?>
<plugin id="cordova-plugin-redScanner" version="0.0.1"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns="http://apache.org/cordova/ns/plugins/1.0">
<name>RedScanner Plugin</name>
<js-module name="cordova-plugin-redScanner" src="www/redScanner.js">
<clobbers target="cordova.plugin.redScanner"/>
</js-module>
<platform name="android">
<config-file parent="/*" target="res/xml/config.xml">
<feature name="RedScanner">
<param name="android-package" value="cordova.plugin.redScanner.RedScanner"/>
</feature>
</config-file>
<source-file src="src/android/cordova/plugin/redScanner/RedScanner.java"
target-dir="cordova/plugin/redScanner"/>
<lib-file src="src/android/libsref/ScannerAPI.jar" />
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<uses-library android:name="android.scanner.library"/>
</config-file>
<config-file target="AndroidManifest.xml" parent="/*">
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</config-file>
</platform>
</plugin>

View File

@@ -0,0 +1,83 @@
package cordova.plugin.redScanner;
import android.util.Log;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import com.seuic.scanner.DecodeInfo;
import com.seuic.scanner.DecodeInfoCallBack;
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
import com.seuic.scanner.StatusCallBack;
public class RedScanner extends CordovaPlugin implements DecodeInfoCallBack, StatusCallBack {
private CallbackContext cb;
private Scanner scanner;
private boolean isOpen = false;
@Override
protected void pluginInitialize() {
super.pluginInitialize();
scanner = ScannerFactory.getScanner(cordova.getContext());
scanner.setDecodeInfoCallBack(this);
scanner.setStatusCallBack(this);
isOpen = scanner.open();
}
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if("scan".equals(action)) {
cb = callbackContext;
if(!isOpen) {
scanner.open();
}
Log.d("SCAN_PLUGIN", "start scan: ");
scanner.startScan();
return true;
}
return false;
}
/**
* 扫码结果回调
*/
@Override
public void onDecodeComplete(DecodeInfo decodeInfo) {
Log.d("SCAN_PLUGIN", "onDecodeComplete: "+decodeInfo.codetype+"----"+decodeInfo.barcode);
PluginResult result = new PluginResult(PluginResult.Status.OK, decodeInfo.barcode);
result.setKeepCallback(false);
cb.sendPluginResult(result);
}
/**
* 扫码状态回调
*/
@Override
public void onStatusCallBack(int status, int info) {
Log.d("SCAN_PLUGIN", "onDStatus: "+status+"----"+info);
if(status == 2) { // status = 2,扫码超时不需要返回
PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT);
result.setKeepCallback(false);
cb.sendPluginResult(result);
}
}
@Override
public void onPause(boolean multitasking){
super.onPause(multitasking);
scanner.stopScan();
}
@Override
public void onDestroy() {
super.onDestroy();
scanner.stopScan();
}
}

Binary file not shown.

10
www/redScanner.js Normal file
View File

@@ -0,0 +1,10 @@
var exec = require('cordova/exec');
var redScanner = function RedScannser() {};
redScanner.scan = function(success, error) {
exec(success, error, 'RedScanner', 'scan', []);
};
module.exports = redScanner;