From d58bc0e2057f58342f490f5605eda3b80dc0ca29 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 27 三月 2024 11:47:21 +0800
Subject: [PATCH] 添加中安身份证识别相关功能 优化贴卡提示 优化二次确认的按钮样式 添加超时时不在主线程的处理

---
 app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java |  115 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 90 insertions(+), 25 deletions(-)

diff --git a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
index 548f272..096e8f7 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -5,7 +5,9 @@
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
+import android.view.View;
 import android.widget.Toast;
 
 import com.dayu.recharge.MyApplication;
@@ -41,6 +43,9 @@
 import com.dayu.recharge.utils.MyCommon;
 import com.dayu.recharge.utils.SocketUtil;
 import com.dayu.recharge.utils.TipUtil;
+import com.dayu.recharge.view.ConfirmDialog;
+import com.dayu.recharge.view.ProgressDialog;
+import com.dayu.recharge.view.TitleBar;
 import com.tencent.bugly.crashreport.CrashReport;
 
 import java.util.Arrays;
@@ -53,7 +58,7 @@
  * Description: nfc鍐欏崱鐣岄潰
  */
 public class NFCWreatActivity extends BaseNfcActivity {
-
+    public static String TAG = "NFCWreatActivity";
 
     boolean cleanFlag = false;
     boolean userFlag = false;
@@ -69,6 +74,11 @@
     boolean configDeviceRegiestFlag = false;
 
     boolean configPowerFlag = false;
+
+    /**
+     * 鏄惁涓嶅啀楠岃瘉鐢ㄦ埛鐩存帴鍐欏崱
+     */
+    boolean isAgainWrite = false;
 
     UserCardBean userCardBean;
 
@@ -103,6 +113,7 @@
     //鍏呭�奸�氫俊鏄惁瀹屾垚
     boolean rechargeIsOk = false;
     ActivityWriteTextBinding binding;
+    ConfirmDialog confirmDialog;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -111,12 +122,61 @@
             binding = ActivityWriteTextBinding.inflate(LayoutInflater.from(this));
             setContentView(binding.getRoot());
             nfcWreatActivity = this;
+            setData();
             getData();
             baseApp = (MyApplication) getApplication();
         } catch (Exception e) {
             e.printStackTrace();
             CrashReport.postCatchedException(e);
         }
+    }
+
+
+    private void setData() {
+        titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE, v -> {
+            //澶勭悊鍥犵敤鎴疯鎿嶄綔杩斿洖瀵艰嚧涓嶈兘鍐欏崱鐨勯棶棰橈紝娣诲姞浜屾纭
+            back();
+        });
+    }
+
+    private void back() {
+        if (isUser) {
+            confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> {
+                confirmDialog.dismiss();
+                myFinish();
+            });
+            confirmDialog.show();
+        } else if (!TextUtils.isEmpty(morny)) {
+            confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> {
+                confirmDialog.dismiss();
+                myFinish();
+            });
+            confirmDialog.show();
+        } else {
+            finish();
+        }
+    }
+
+
+    private void myFinish() {
+        if (NewCardActivity.newCardActivity != null) {
+            NewCardActivity.newCardActivity.finish();
+        }
+        if (RechargeActivity.rechargeActivity != null) {
+            RechargeActivity.rechargeActivity.finish();
+        }
+        NFCWreatActivity.nfcWreatActivity.finish();
+    }
+
+
+    //鐐瑰嚮涓ゆ閫�鍑虹▼搴� 鏈夋椂闂撮棿闅� 闂撮殧鍐呯偣鍑诲垯閫�鍑虹▼搴� 鍚﹀垯 鍒欐彁绀�
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            back();
+            return true;
+        }
+        return super.onKeyDown(keyCode, event);
     }
 
 
@@ -199,6 +259,8 @@
             binding.textView.setTextColor(getResources().getColor(R.color.red));
         } else if (cardType.equals("-1")) {
             TipUtil.show(NFCWreatActivity.this, "璇峰嬁绉诲姩鍗$墖锛岃鍗″け璐ヨ閲嶈瘯锛侊紒");
+        } else if (cardType.equals("-2")) {
+            TipUtil.show(NFCWreatActivity.this, "璇诲崱澶辫触,璇锋鏌ュ崱鏄惁鏄敤鎴峰崱");
         } else {
             Log.i("NFCWreatActivity", "olduserCard!=null  saveData");
             saveData();
@@ -217,7 +279,6 @@
                     || configureDeviceRegistrationCrad != null
                     || configurationPowerCard != null) {
                 if (userCard != null && TextUtils.isEmpty(morny)) {
-
                     userFlag = WriteCardUtils.setUser(intent, userCard, this);
                 }
                 if (cleanCard != null) {
@@ -334,6 +395,7 @@
     }
 
     void startAnim() {
+        binding.avi.setVisibility(View.VISIBLE);
         binding.avi.show();
         // or avi.smoothToShow();
     }
@@ -357,7 +419,7 @@
             rechargeRequestBean.setBalance(morny);
 
             rechargeRequestBean.setOrderId(SocketUtil.getOrderId(NFCWreatActivity.this));
-            SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(), new SocketCallBack() {
+            SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(),"95", new SocketCallBack() {
 
                 @Override
                 public void onSocketResponse(SocketData readData) {
@@ -375,7 +437,7 @@
                         //00鍚敤01绂佺敤02闅跺睘淇℃伅涓嶇03鏃犳鍗′俊鎭�04鍏跺畠
                         if ("00".equalsIgnoreCase(state)) {
                             rechargeIsOk = true;
-                            binding.cardData.setText("鍏呭�奸�氫俊瀹屾垚锛岃甯栧崱鍏呭��");
+                            binding.cardData.setText("鍏呭��"+morny+"鍏冮�氫俊瀹屾垚锛岃甯栧崱鍐欏崱");
                             rechargeBean = new RechargeBean();
                             rechargeBean.setDate(System.currentTimeMillis());
                             rechargeBean.setMorny(morny);
@@ -418,8 +480,11 @@
 
                 @Override
                 public void onSocketError(int code, String msg) {
-                    stopAnim();
-                    TipUtil.show(NFCWreatActivity.this, msg);
+                    runOnUiThread(() -> {
+                        stopAnim();
+                        TipUtil.show(NFCWreatActivity.this, msg);
+                    });
+
                 }
             });
         } catch (Exception e) {
@@ -434,7 +499,7 @@
         UserCard userCardold = NfcReadHelper.getInstence(intent, this).getUserCardData();
         if (userCardold != null) {
             //鍒ゆ柇鏄惁鍏呭�肩殑鏄竴涓崱
-            if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode())) {
+            if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode()) || isAgainWrite) {
                 userCard.setState("00");
                 userFlag = WriteCardUtils.setUser(intent, userCard, this);
                 //   鎵撳嵃鐩稿叧
@@ -442,12 +507,14 @@
                     setPrinterData(rechargeBean);
                     startDetailActivity(userName, "鍚敤");
                 } else {
-                    TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触锛岃閲嶆柊鍐嶈瘯");
+                    isAgainWrite = true;
+                    TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触锛岃閲嶆柊璐村崱");
                 }
             } else {
                 TipUtil.show(NFCWreatActivity.this, "璇诲彇鐨勫崱鍜屽厖鍊肩殑鍗′笉涓�鑷�");
             }
         }
+        stopAnim();
     }
 
     private void setmanageCard(Intent intent, final ManageCard manageCard) {
@@ -536,13 +603,7 @@
             detail.putExtra("morny", morny);
         }
         startActivity(detail);
-        if (NewCardActivity.newCardActivity != null) {
-            NewCardActivity.newCardActivity.finish();
-        }
-        if (RechargeActivity.rechargeActivity != null) {
-            RechargeActivity.rechargeActivity.finish();
-        }
-        NFCWreatActivity.nfcWreatActivity.finish();
+        myFinish();
     }
 
     /**
@@ -551,8 +612,9 @@
      * @param initPeasantCode 鍐滄埛娉ㄥ唽缂栧彿
      */
     private void selectBalance(String initPeasantCode) {
-
+        Log.i(TAG, "琛ュ崱鏌ヨ浣欓:鍐滄埛娉ㄥ唽缂栧彿 " + initPeasantCode);
         try {
+            startAnim();
             BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean();
             requestBean.setAFN("94");
             requestBean.setControl("01");
@@ -560,7 +622,7 @@
             requestBean.setInitCode(initCode);
             requestBean.setInitPeasantCode(initPeasantCode);
             requestBean.setXuLie(SocketUtil.getXuLie(this));
-            SocketNet.getInstance().sendTestMessage(requestBean.pack(), new SocketCallBack() {
+            SocketNet.getInstance().sendTestMessage(requestBean.pack(), "94",new SocketCallBack() {
                 @Override
                 public void onSocketResponse(SocketData readData) {
                     if (CRC8.isCRC8(readData.getOriginDataBytes())) {
@@ -598,12 +660,7 @@
                                 //琛ュ崱閫昏緫
                                 userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
                                 if (userFlag) {
-                                    TipUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛", new TipUtil.TipListener() {
-                                        @Override
-                                        public void onCancle() {
-                                            NFCWreatActivity.this.finish();
-                                        }
-                                    });
+                                    TipUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛", () -> NFCWreatActivity.this.finish());
                                 }
                                 return;
                             } else if ("01".equals(state)) {
@@ -631,23 +688,31 @@
                         //鏍¢獙CRC閿欒
                         TipUtil.show(NFCWreatActivity.this, "寮�鍗℃姤鏂囨牎楠孋RC閿欒");
                     }
+                    stopAnim();
+
                 }
 
                 @Override
                 public void onSocketError(int code, String msg) {
-                    stopAnim();
-                    TipUtil.show(NFCWreatActivity.this, msg);
+                    runOnUiThread(() -> {
+                        stopAnim();
+                        TipUtil.show(NFCWreatActivity.this, msg);
+                    });
+
                 }
             });
         } catch (Exception e) {
             e.printStackTrace();
             CrashReport.postCatchedException(e);
+            stopAnim();
+            ProgressDialog.dismiss();
         }
 
     }
 
     protected void onDestroy() {
         super.onDestroy();
+        ProgressDialog.dismiss();
         nfcWreatActivity = null;
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0