diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b77df4f..2af419f 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,8 +2,8 @@ diff --git a/build.gradle b/build.gradle index aad4db6..74d498c 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ dependencies { implementation files('libs/fastjson-1.2.3.jar') implementation files('libs/sunjce_provider.jar') implementation files('libs/zbar.jar') - implementation files('libs/zxing.jar') +// implementation files('libs/zxing.jar') implementation files('libs/gson-2.6.2.jar') implementation files('libs\\rskapi.jar') implementation files('libs\\zkandroidcore.jar') @@ -42,6 +42,8 @@ dependencies { implementation files('libs\\zypos1.8.jar') implementation files('libs\\jsch-0.1.54.jar') implementation 'org.jetbrains:annotations-java5:15.0' + implementation files('libs\\cyt-common-dynamic-code-3.6.4.jar') + implementation files('libs\\zxingcore-2.3.0.jar') compileOnly files('external_libs/classes_2.1.11_20160907.jar') compileOnly files('external_libs/bw_odm_20160526.jar') implementation files('libs/bw_pos_sdk2.0.18.jar') @@ -83,6 +85,11 @@ android { } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + //在apk文件后边生成版本号信息 android.applicationVariants.all { variant -> @@ -119,7 +126,7 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 21 - vectorDrawables.useSupportLibrary =true + vectorDrawables.useSupportLibrary = true ndk { abiFilters "armeabi", "armeabi-v7a"//可以适当补填其他 @@ -144,6 +151,7 @@ android { // } } + def releaseTime() { return new SimpleDateFormat("yyyyMMddHHmm").format(new Date()) } diff --git a/libs/cyt-common-dynamic-code-3.6.4.jar b/libs/cyt-common-dynamic-code-3.6.4.jar new file mode 100644 index 0000000..7202bab --- /dev/null +++ b/libs/cyt-common-dynamic-code-3.6.4.jar diff --git a/libs/zxingcore-2.3.0.jar b/libs/zxingcore-2.3.0.jar new file mode 100644 index 0000000..4ab8cb7 --- /dev/null +++ b/libs/zxingcore-2.3.0.jar diff --git a/src/com/ectrip/cyt/ui/NewHandleScanerActivity.java b/src/com/ectrip/cyt/ui/NewHandleScanerActivity.java index 2a4a497..608e618 100644 --- a/src/com/ectrip/cyt/ui/NewHandleScanerActivity.java +++ b/src/com/ectrip/cyt/ui/NewHandleScanerActivity.java @@ -8,6 +8,7 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.security.InvalidParameterException; import java.util.ArrayList; +import java.util.Date; import java.util.concurrent.atomic.AtomicBoolean; import android.app.AlertDialog; @@ -23,6 +24,9 @@ import android.widget.Toast; import android_serialport_api.SerialPortNewHandset; +import com.ectrip.common.dynamic.code.core.DynamicVerifyCodeTool; +import com.ectrip.common.dynamic.code.exception.DynamicVerifyCodeException; +import com.ectrip.common.dynamic.code.model.DynamicVerifyCodeDecodeResult; import com.ectrip.cyt.bean.ConfigBean; import com.ectrip.cyt.config.DevicTool; import com.ectrip.cyt.config.MyApp; @@ -159,7 +163,7 @@ public class NewHandleScanerActivity extends BaseActivity { } else { try { if (result.startsWith("CYT_")) { - LogUtil.i(TAG,"result = " + result); + LogUtil.i(TAG, "result = " + result); typeScan = 0; if (result.contains(",")) { result = result.substring(result.indexOf("_") + 1, result.indexOf(",")); @@ -186,6 +190,31 @@ public class NewHandleScanerActivity extends BaseActivity { } else if ((result.startsWith("TY_") || (result.startsWith("PMS_")))) { typeScan = 1; result = result; + } else if (result.startsWith("OCP_")) { + typeScan = 0; + result = result; + } else if (result.startsWith("DYV_")) { + try { + DynamicVerifyCodeDecodeResult decodeResult = DynamicVerifyCodeTool.decodeDynamicCode(result); + boolean expired = decodeResult.getExpired(); + String staticCode = decodeResult.getStaticCode(); + Date expireTime = decodeResult.getExpireTime(); + LogUtil.d(TAG, "expired = " + expired); + LogUtil.d(TAG, "staticCode = " + staticCode); + LogUtil.d(TAG, "expireTime = " + expireTime); + if (!expired) { + typeScan = 1; + result = staticCode; + } else { + typeScan = 2; + result = "动态二维码已过有效期"; + } + } catch (DynamicVerifyCodeException e) { + typeScan = 2; + LogUtil.d(TAG, "动态核销码异常:" + e.getMessage()); + result = e.getMessage(); + e.printStackTrace(); + } } else { typeScan = 1; result = result; diff --git a/src/com/ectrip/cyt/ui/PhomeScanerOrderActivity.java b/src/com/ectrip/cyt/ui/PhomeScanerOrderActivity.java index b658c0c..76944ea 100644 --- a/src/com/ectrip/cyt/ui/PhomeScanerOrderActivity.java +++ b/src/com/ectrip/cyt/ui/PhomeScanerOrderActivity.java @@ -2,6 +2,7 @@ package com.ectrip.cyt.ui; import java.io.IOException; import java.util.ArrayList; +import java.util.Date; import java.util.Vector; import android.content.Intent; @@ -22,6 +23,9 @@ import android.view.WindowManager; import android.widget.TextView; import android.widget.Toast; +import com.ectrip.common.dynamic.code.core.DynamicVerifyCodeTool; +import com.ectrip.common.dynamic.code.exception.DynamicVerifyCodeException; +import com.ectrip.common.dynamic.code.model.DynamicVerifyCodeDecodeResult; import com.ectrip.cyt.bean.ConfigBean; import com.ectrip.cyt.config.DevicTool; import com.ectrip.cyt.constant.constant; @@ -174,6 +178,29 @@ public class PhomeScanerOrderActivity extends BaseActivity implements Callback { } else if (resultString.startsWith("OCP_")) { typeScan = 0; resultString = resultString; + } else if (resultString.startsWith("DYV_")) { + try { + DynamicVerifyCodeDecodeResult decodeResult = DynamicVerifyCodeTool.decodeDynamicCode(resultString); + boolean expired = decodeResult.getExpired(); + String staticCode = decodeResult.getStaticCode(); + Date expireTime = decodeResult.getExpireTime(); + LogUtil.d(TAG, "expired = " + expired); + LogUtil.d(TAG, "staticCode = " + staticCode); + LogUtil.d(TAG, "expireTime = " + expireTime); + if (!expired) { + typeScan = 1; + resultString = staticCode; + } else { + typeScan = 2; + resultString = "动态二维码已过有效期"; + } + } catch (DynamicVerifyCodeException e) { + typeScan = 2; + LogUtil.d(TAG, "动态核销码异常:" + e.getMessage()); + resultString = e.getMessage(); + e.printStackTrace(); + } + } else { typeScan = 1; resultString = resultString; diff --git a/src/com/ectrip/cyt/ui/QRCodeOrderListActivity.java b/src/com/ectrip/cyt/ui/QRCodeOrderListActivity.java index 7af04f0..e92d831 100644 --- a/src/com/ectrip/cyt/ui/QRCodeOrderListActivity.java +++ b/src/com/ectrip/cyt/ui/QRCodeOrderListActivity.java @@ -103,6 +103,12 @@ public class QRCodeOrderListActivity extends BaseActivity implements ListOnclick LogUtil.d(TAG, "orid = " + orid); typeScan = getIntent().getIntExtra("typeScan", 0); LogUtil.d(TAG, "typeScan = " + typeScan); + if (typeScan == 2) { + orderList.setEmptyView(errorLayout); + errorLayout.setVisibility(View.VISIBLE); + errorInfo.setText(orid); + return; + } if (orid.startsWith("OCP_")) { ArrayList productOfConsumeOrders = new ArrayList<>(); ProductOfConsumeOrder productOfConsumeOrder = new ProductOfConsumeOrder(); diff --git a/src/com/ectrip/cyt/ui/ScanerOrderActivity.java b/src/com/ectrip/cyt/ui/ScanerOrderActivity.java index 0a21cef..a00d968 100644 --- a/src/com/ectrip/cyt/ui/ScanerOrderActivity.java +++ b/src/com/ectrip/cyt/ui/ScanerOrderActivity.java @@ -3,6 +3,7 @@ package com.ectrip.cyt.ui; import android.annotation.SuppressLint; import android.content.Intent; import android.content.res.AssetFileDescriptor; +import android.graphics.Color; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.hardware.Camera.PreviewCallback; @@ -17,12 +18,18 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Vibrator; +import android.text.SpannableStringBuilder; +import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.FrameLayout; import android.widget.TextView; +import com.ectrip.common.dynamic.code.core.DynamicVerifyCodeTool; +import com.ectrip.common.dynamic.code.exception.DynamicVerifyCodeException; +import com.ectrip.common.dynamic.code.model.DynamicVerifyCodeDecodeResult; import com.ectrip.cyt.bean.ConfigBean; import com.ectrip.cyt.constant.constant; import com.ectrip.cyt.db.DbManager; @@ -45,6 +52,7 @@ import net.sourceforge.zbar.SymbolSet; import java.io.IOException; import java.util.ArrayList; +import java.util.Date; /** * 二维码pos版扫描 @@ -240,6 +248,31 @@ public class ScanerOrderActivity extends BaseActivity { } else if ((scannerResult.startsWith("TY_") || (scannerResult.startsWith("PMS_")))) { typeScan = 1; scannerResult = scannerResult; + } else if (scannerResult.startsWith("DYV_")) { + try { + DynamicVerifyCodeDecodeResult decodeResult = DynamicVerifyCodeTool.decodeDynamicCode(scannerResult); + boolean expired = decodeResult.getExpired(); + String staticCode = decodeResult.getStaticCode(); + Date expireTime = decodeResult.getExpireTime(); + LogUtil.d(TAG, "expired = " + expired); + LogUtil.d(TAG, "staticCode = " + staticCode); + LogUtil.d(TAG, "expireTime = " + expireTime); + if (!expired) { + typeScan = 1; + scannerResult = staticCode; + } else { + typeScan = 2; + scannerResult = "动态二维码已过有效期"; + } + } catch (DynamicVerifyCodeException e) { + String errorMsg = e.getMessage(); + LogUtil.d(TAG, "动态核销码异常:" + errorMsg); + typeScan = 2; + scannerResult = errorMsg; + e.printStackTrace(); + return; + } + } else { typeScan = 1; scannerResult = scannerResult; diff --git a/src/com/ectrip/cyt/zxing/decoding/DecodeFormatManager.java b/src/com/ectrip/cyt/zxing/decoding/DecodeFormatManager.java index 2898a88..b3d4c64 100644 --- a/src/com/ectrip/cyt/zxing/decoding/DecodeFormatManager.java +++ b/src/com/ectrip/cyt/zxing/decoding/DecodeFormatManager.java @@ -39,7 +39,7 @@ final class DecodeFormatManager { PRODUCT_FORMATS.add(BarcodeFormat.UPC_E); PRODUCT_FORMATS.add(BarcodeFormat.EAN_13); PRODUCT_FORMATS.add(BarcodeFormat.EAN_8); - PRODUCT_FORMATS.add(BarcodeFormat.RSS14); + PRODUCT_FORMATS.add(BarcodeFormat.RSS_14); ONE_D_FORMATS = new Vector(PRODUCT_FORMATS.size() + 4); ONE_D_FORMATS.addAll(PRODUCT_FORMATS); ONE_D_FORMATS.add(BarcodeFormat.CODE_39);