diff --git a/plugin.xml b/plugin.xml
index ab41334..ab28aae 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -13,10 +13,6 @@
-
-
diff --git a/src/android/cordova/plugin/jcprinter/JcPrinter.java b/src/android/cordova/plugin/jcprinter/JcPrinter.java
index 3781ef5..3d0ede0 100644
--- a/src/android/cordova/plugin/jcprinter/JcPrinter.java
+++ b/src/android/cordova/plugin/jcprinter/JcPrinter.java
@@ -3,36 +3,30 @@ package cordova.plugin.jcprinter;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import android.Manifest;
-import android.annotation.SuppressLint;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
-import android.content.Context;
import androidx.core.content.ContextCompat;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import android.content.SharedPreferences;
import android.os.Build;
import android.util.Log;
-import android.view.View;
-import android.widget.Toast;
import androidx.core.app.ActivityCompat;
-import com.gengcon.www.jcprintersdk.bean.ImageDataInfo;
+import com.gengcon.www.jcprintersdk.JCPrintApi;
+import com.gengcon.www.jcprintersdk.callback.Callback;
import com.gengcon.www.jcprintersdk.callback.PrintCallback;
import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
@@ -42,42 +36,41 @@ public class JcPrinter extends CordovaPlugin {
private static final String TAG = "JcPrinter";
- private Method[] methods = Util.getInstance().getClass().getDeclaredMethods();
+ private static JCPrintApi api;
- /**
- * 页打印份数
- */
- private int quantity;
- /**
- * 是否打印错误
- */
- private boolean isError;
- /**
- * 是否取消打印
- */
- private boolean isCancel;
+ private final Method[] methods = JCPrintApi.class.getDeclaredMethods();
- /**
- * 打印模式
- */
- private int printMode;
-
- /**
- * 打印浓度
- */
- private int printDensity;
-
- /**
- * 打印倍率(分辨率)
- */
- private Float printMultiple;
-
- private final static int START_PRINT = 1;
@Override
protected void pluginInitialize() {
super.pluginInitialize();
+ if(api == null){
+ api = JCPrintApi.getInstance(CALLBACK);
+ api.init(cordova.getActivity().getApplication());
+ api.initImageProcessingDefault("", "");
+ }
+ }
+
+ public JCPrintApi getInstance() {
+ if (api == null) {
+ this.pluginInitialize();
+ }
+
+ return api;
+
+ }
+
+ public int openPrinter(String address) {
+ return getInstance().openPrinterByAddress(address);
+ }
+
+ public void close() {
+ getInstance().close();
+ }
+
+ public int isConnection() {
+ return getInstance().isConnection();
}
@Override
@@ -102,7 +95,6 @@ public class JcPrinter extends CordovaPlugin {
String methodName = args.optString(0);
Log.d(TAG,"action-method:"+methodName);
for(Method m:this.methods){
- String name = m.getName();
if(m.getName().equals(methodName)){
try {
JSONArray methodJsonArgs = args.getJSONArray(1);
@@ -110,7 +102,7 @@ public class JcPrinter extends CordovaPlugin {
for(int i=0;i a = m.getParameterTypes()[i].getComponentType();
Object array = Array.newInstance(a,((JSONArray) obj).length());
for(int j=0;j<((JSONArray) obj).length();j++){
Array.set(array,j,((JSONArray) obj).opt(j));
@@ -120,7 +112,7 @@ public class JcPrinter extends CordovaPlugin {
methodArgs[i] = obj;
}
}
- m.invoke(Util.getInstance(),methodArgs);
+ m.invoke(getInstance(),methodArgs);
callbackContext.success();
} catch (IllegalAccessException | InvocationTargetException e) {
callbackContext.error(e.getMessage());
@@ -131,7 +123,7 @@ public class JcPrinter extends CordovaPlugin {
case "generateLabelJson":
- callbackContext.success(new String(Util.getInstance().generateLabelJson()));
+ callbackContext.success(new String(getInstance().generateLabelJson()));
return true;
}
}catch (Exception e){
@@ -141,6 +133,13 @@ public class JcPrinter extends CordovaPlugin {
return false;
}
+ //重置错误状态变量
+ private boolean isError = false;
+ //重置取消打印状态变量
+ private boolean isCancel = false;
+
+ private int generatedPrintDataPageCount = 0;
+
/**
* 打印标签
*
@@ -148,34 +147,37 @@ public class JcPrinter extends CordovaPlugin {
private void print(JSONArray args, CallbackContext callbackContext) {
JSONArray data = args.optJSONArray(0);
String infoStr = args.optString(1);
- List info = new ArrayList<>();
- info.add(infoStr);
- //重置错误状态变量
- isError = false;
- //重置取消打印状态变量
- isCancel = false;
+ JSONObject cfg = args.optJSONObject(2);
+ int printDensity = cfg.optInt("printDensity",8);
+ int printMode = cfg.optInt("printMode",2);
+ int paperType = cfg.optInt("paperType",2);
+ int quantity = cfg.optInt("quantity",1);
+ generatedPrintDataPageCount = 0;
//总打印份数
-
- final int[] generatedPrintDataPageCount = {0};
int pageCount = data.length();
- quantity = 1;
int totalQuantity = pageCount * quantity;
//总打印份数,表示所有页面的打印份数之和。例如,如果你有3页需要打印,第一页打印3份,第二页打印2份,第三页打印5份,那么count的值应为10(3+2+5)。
- Util.getInstance().setTotalQuantityOfPrints(totalQuantity);
- printDensity = 8;
- printMode = 2;
+ getInstance().setTotalQuantityOfPrints(totalQuantity);
Log.d(TAG, "测试:参数设置-打印浓度: " + printDensity + ",打印模式:" + printMode);
+
+ ListpageData = new ArrayList<>();
+ ListpageInfo = new ArrayList<>();
+ for(int i=0;i hashMap) {
Log.d(TAG, "测试:打印进度:已打印到第" + pageIndex + "页,第" + quantityIndex + "份");
//打印进度回调
if (pageIndex == pageCount && quantityIndex == quantity) {
- if (Util.getInstance().endJob()) {
+ if (getInstance().endJob()) {
Log.d(TAG, "结束打印成功");
callbackContext.success("结束打印成功");
} else {
@@ -317,69 +319,77 @@ public class JcPrinter extends CordovaPlugin {
if (pageIndex > pageCount) {
return;
}
- ListpageData = new ArrayList<>();
- String dataStr= data.optString(pageIndex-1);
- pageData.add(dataStr);
- Util.getInstance().commitData(pageData,info);
+
+ if(generatedPrintDataPageCount < pageCount){
+ if(pageCount - generatedPrintDataPageCount {
- String hint = "";
switch (connectFlag) {
case 0:
- hint = "已连接";
- callbackContext.success(hint);
+ callbackContext.success(this.msg(connectFlag,"已连接"));
break;
case -1:
- hint = "未连接";
- callbackContext.error(hint);
+ callbackContext.error(this.msg(connectFlag,"未连接"));
break;
case -3:
- hint = "不支持的机型";
- callbackContext.error(hint);
+ callbackContext.error(this.msg(connectFlag,"不支持的机型"));
break;
default:
+ callbackContext.error(this.msg(connectFlag,"未知状态"));
break;
}
});
}
+ private JSONObject msg(int code,String msg) {
+ try {
+ return new JSONObject().put("code",code).put("msg",msg);
+ }catch (JSONException e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
private void connectPrinter(JSONArray args, CallbackContext callbackContext) throws JSONException {
JSONObject obj = args.getJSONObject(0);
String address = obj.getString("address");
- int connectResult = Util.openPrinter(address);
+ int connectFlag = openPrinter(address);
cordova.getActivity().runOnUiThread(() -> {
- String hint = "";
- switch (connectResult) {
+ switch (connectFlag) {
case 0:
- hint = "连接成功";
- callbackContext.success(hint);
+ callbackContext.success(this.msg(connectFlag,"连接成功"));
break;
case -1:
- hint = "连接失败";
- callbackContext.error(hint);
+ callbackContext.error(this.msg(connectFlag,"连接失败"));
break;
- case -2:
- hint = "不支持的机型";
- callbackContext.error(hint);
+ case -3:
+ callbackContext.error(this.msg(connectFlag,"不支持的机型"));
break;
default:
+ callbackContext.error(this.msg(connectFlag,"未知状态"));
break;
}
});
}
- /***
- * Find Zebra printers we can connect to
- * @return
- */
- @SuppressLint("MissingPermission")
- private JSONArray getList(CallbackContext callbackContext) {
+ private void getList(CallbackContext callbackContext) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int blueTooth_permission = ContextCompat.checkSelfPermission(cordova.getContext(), Manifest.permission.BLUETOOTH);
@@ -424,8 +434,53 @@ public class JcPrinter extends CordovaPlugin {
}
Log.d(TAG,"printers = " + printers);
callbackContext.success(printers);
- return printers;
}
-
+
+ private static final Callback CALLBACK = new Callback() {
+ @Override
+ public void onConnectSuccess(String s) {
+
+ }
+
+ @Override
+ public void onDisConnect() {
+
+ }
+
+ @Override
+ public void onElectricityChange(int i) {
+
+ }
+
+ @Override
+ public void onCoverStatus(int i) {
+
+ }
+
+ @Override
+ public void onPaperStatus(int i) {
+
+ }
+
+ @Override
+ public void onRfidReadStatus(int i) {
+
+ }
+
+ @Override
+ public void onPrinterIsFree(int i) {
+
+ }
+
+ @Override
+ public void onHeartDisConnect() {
+
+ }
+
+ @Override
+ public void onFirmErrors() {
+
+ }
+ };
}
diff --git a/src/android/cordova/plugin/jcprinter/MyApplication.java b/src/android/cordova/plugin/jcprinter/MyApplication.java
deleted file mode 100644
index b3d9860..0000000
--- a/src/android/cordova/plugin/jcprinter/MyApplication.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package cordova.plugin.jcprinter;
-
-import android.app.Application;
-import android.content.Context;
-
-/**
- * 自定义Application
- *
- * @author zhangbin
- */
-public class MyApplication extends Application {
- private static MyApplication app;
-
- @Override
- public void onCreate() {
- super.onCreate();
- app = this;
- }
-
- public static MyApplication getInstance() {
- return app;
- }
-}
diff --git a/src/android/cordova/plugin/jcprinter/Util.java b/src/android/cordova/plugin/jcprinter/Util.java
deleted file mode 100644
index 2e08f98..0000000
--- a/src/android/cordova/plugin/jcprinter/Util.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package cordova.plugin.jcprinter;
-
-import com.gengcon.www.jcprintersdk.JCPrintApi;
-import com.gengcon.www.jcprintersdk.callback.Callback;
-import cordova.plugin.jcprinter.MyApplication;
-
-public class Util {
-
-
- private static final Callback CALLBACK = new Callback() {
- @Override
- public void onConnectSuccess(String s) {
-
- }
-
- @Override
- public void onDisConnect() {
-
- }
-
- @Override
- public void onElectricityChange(int i) {
-
- }
-
- @Override
- public void onCoverStatus(int i) {
-
- }
-
- @Override
- public void onPaperStatus(int i) {
-
- }
-
- @Override
- public void onRfidReadStatus(int i) {
-
- }
-
- @Override
- public void onPrinterIsFree(int i) {
-
- }
-
- @Override
- public void onHeartDisConnect() {
-
- }
-
- @Override
- public void onFirmErrors() {
-
- }
- };
-
- private static JCPrintApi api;
-
-
- public static JCPrintApi getInstance() {
- if (api == null) {
- api = JCPrintApi.getInstance(CALLBACK);
- api.init(MyApplication.getInstance());
- api.initImageProcessingDefault("", "");
-
-
-// Log.d(TAG, "api.init"+api.init(MyApplication.getInstance()));
-// Log.d(TAG, "api.initImageProcessingDefault"+ api.initImageProcessingDefault("", ""));
- }
-
- return api;
-
- }
-
- private static final String TAG = "PrintUtil";
-
- public static int openPrinter(String address) {
- getInstance();
- return api.openPrinterByAddress(address);
- }
-
- public static void close() {
- getInstance();
- api.close();
- }
-
- public static int isConnection() {
- getInstance();
- return api.isConnection();
- }
-
-}
diff --git a/www/jcPrinter.js b/www/jcPrinter.js
index 93adecc..e37fbd8 100644
--- a/www/jcPrinter.js
+++ b/www/jcPrinter.js
@@ -26,12 +26,12 @@ var exec = require('cordova/exec');
* @param {*} success
* @param {*} error
*/
-exports.print = async function (data,info) {
- return new Promise((resolve, reject) => exec(resolve,reject, 'JcPrinter', 'print', [data,info]));
+exports.print = async function (data,info,cfg) {
+ return new Promise((resolve, reject) => exec(resolve,reject, 'JcPrinter', 'print', [data,info,cfg||{}]));
};
-exports.getList = function (arg0) {
- return new Promise((resolve, reject) => exec(resolve,reject, 'JcPrinter', 'getList', [arg0]));
+exports.getList = function () {
+ return new Promise((resolve, reject) => exec(resolve,reject, 'JcPrinter', 'getList', []));
};
exports.connectPrinter = function (arg0) {
@@ -39,8 +39,8 @@ exports.connectPrinter = function (arg0) {
}
-exports.isConnection = function (arg0) {
- return new Promise((resolve, reject) => exec(resolve,reject,'JcPrinter', 'isConnection', [arg0]));
+exports.isConnection = function () {
+ return new Promise((resolve, reject) => exec(resolve,reject,'JcPrinter', 'isConnection', []));
}
exports.Instance = {