From 954eaed548efb75b3dc79343587acb79e53d214d Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期五, 23 八月 2024 17:19:59 +0800 Subject: [PATCH] 优化写卡逻辑,再次读取内容确认写卡成功再提示成功 --- qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java | 25 ++++++++++++ qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java | 27 +++++++++++-- qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml | 6 +- qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java | 27 ++++++++----- app/build.gradle | 4 +- 5 files changed, 68 insertions(+), 21 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index edf6e9e..5fd2666 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ applicationId "com.dayu.recharge" minSdk 23 targetSdk 26 - versionCode 260 - versionName "2.6.0" + versionCode 261 + versionName "2.6.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java index d6c4ad9..47a4ea5 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java +++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NFCWreatActivity.java @@ -495,7 +495,6 @@ userCard.setUserCodeNumber(Integer.valueOf(userCode.substring(12, 16))); userCardBean.setCardNumber(cardNumber); userCardBean.setUserCode(userCode); - baseDao.userCardDao().insert(userCardBean); if (WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this)) { confromOpenCard(t.getData().getIccardRechargeRecordId(), 0); } else { @@ -527,7 +526,12 @@ public void onNext(BaseResponse<LoginResult> t) { if (t.isSuccess()) { //{"code":"0","msg":"鎿嶄綔鎴愬姛","data":{"chargeMethod":"","iccardCancelTime":"","lastRechargeTime":"2024-08-05 17:04:15","thisSaleMoney":"","totalRechargeWaterAmount":0.00,"iccardBalanceAmonunt":0.00,"iccardInfoId":"1820385315354320898","iccardProtocolName":"","totalRechargeElectricAmount":0.00,"logicState":1,"username":"","state":1,"familySize":"","yearRechargeMoney":0.00,"thisSaleAmount":"","onlyRechargeMoney":"","identityCard":"","iccardBrand":"","iccardBalanceMoney":0.00,"openOperatorUsername":"","adName":"","rechargeWaterAmount":"","openOperatorUserId":"1816297106145103873","lastSwipeTime":"","address":"","yearCompensateMoney":0.00,"iccardProtocolOpenMoney":"","peasantId":"1820374742679953410","reissueTimes":0,"iccardProtocolReissueMoney":"","iccardProtocolId":"","yearRechargeWaterAmount":0.00,"iccardBalanceElectric":0.00,"iccardStatus":0,"phone":"","lastRechargeMoney":0.00,"iccardOpenTime":"","yearRechargeElectricAmount":0.00,"reissueRechargeRecordId":"","iccardPrice":1.50,"iccardNum":"3714251023011","accountType":0,"equipCode":"","rechargeWaterMoney":"","totalRechargeMoney":0.00,"executeWaterPrice":"","iccardType":1,"iccardCode":"BADA4044"}} - startDetailActivity("缁堢鍐欏崱"); + if (writeCardStatus == 0) { + baseDao.userCardDao().insert(userCardBean); + startDetailActivity("缁堢鍐欏崱"); + } else { + TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触璇烽噸鏂拌创鍗★紒"); + } } } }); @@ -551,15 +555,18 @@ @Override public void onNext(BaseResponse<LoginResult> t) { if (t.isSuccess()) { - - try { - baseDao.rechargeDao().insert(rechargeBean); - } catch (Exception e) { - e.printStackTrace(); + if (writeCardStatus == 0) { + try { + baseDao.rechargeDao().insert(rechargeBean); + } catch (Exception e) { + e.printStackTrace(); + } + // 鎵撳嵃鐩稿叧 + PrintUtils.printerData(rechargeBean); + startDetailActivity("缁堢鍐欏崱"); + } else { + TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触璇烽噸鏂拌创鍗★紒"); } - // 鎵撳嵃鐩稿叧 - PrintUtils.printerData(rechargeBean); - startDetailActivity("缁堢鍐欏崱"); } else { ToastUtil.show(t.getMsg()); } diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java index 0cfd460..07a4fcd 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java +++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/card/UserCard.java @@ -2,11 +2,11 @@ import com.dayu.baselibrary.tools.BcdUtil; import com.dayu.baselibrary.tools.HexUtil; - import com.dayu.qiheonlinelibrary.utils.CardCommon; import com.tencent.bugly.crashreport.CrashReport; import java.io.Serializable; +import java.util.Arrays; import java.util.Calendar; import java.util.List; @@ -39,6 +39,27 @@ public Float electricPrice;//鐢靛崟浠凤紝淇濈暀涓変綅灏忔暟 + /** + * 鍐欏崱瀹屾垚鍚庢牎楠屾槸鍚﹀啓鍗℃垚鍔� + * + * @param data + * @return + */ + public boolean equlsUserCard(List<byte[]> data) { + // 鍙傛暟楠岃瘉 + if (data == null || data.size() < 3) { + return false; + } + // 瀹氫箟瑕佹瘮杈冪殑瀛楄妭鏁扮粍 + byte[][] expectedBytes = {getZeroBytes(), getOneBytes(), getTwoBytes()}; + // 閫愪釜姣旇緝瀛楄妭鏁扮粍 + for (int i = 0; i < 3; i++) { + if (!Arrays.equals(data.get(i), expectedBytes[i])) { + return false; + } + } + return true; + } /** * 杩斿洖瀹屾暣鐨勭敤鎴风紪鍙� @@ -385,4 +406,6 @@ public void setElectricPrice(Float electricPrice) { this.electricPrice = electricPrice; } + + } diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java index 3517fcb..5ce38e4 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java +++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java @@ -11,6 +11,8 @@ import com.dayu.qiheonlinelibrary.card.UserCard; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; /** * @author zx @@ -70,6 +72,7 @@ int a = 1; try { MifareClassic mfc = MifareClassic.get(tag); + List<byte[]> list = new ArrayList<>(); if (null != mfc) { try { //杩炴帴NFC @@ -96,7 +99,22 @@ //鍐欏崱 mfc.writeBlock(bIndex + b, data); } - return true; + int bIndex = mfc.sectorToBlock(1); + for (int j = 0; j < 3; j++) { + //璇诲彇鏁版嵁 + byte[] data = null; + try { + data = mfc.readBlock(bIndex); + bIndex++; + list.add(data); + } catch (Exception e) { + e.printStackTrace(); + } + } + if (userCard.equlsUserCard(list)) { + return true; + } + return false; } return false; } catch (Exception e) { @@ -262,13 +280,13 @@ boolean isOpen = mfc.authenticateSectorWithKeyA(sector, defauleKey); if (!isOpen) { isOpen = mfc.authenticateSectorWithKeyA(sector, companyKey2); - if (isOpen){ + if (isOpen) { mfc.authenticateSectorWithKeyB(sector, companyKey2); } } if (!isOpen) { isOpen = mfc.authenticateSectorWithKeyA(sector, companyKey); - if (isOpen){ + if (isOpen) { mfc.authenticateSectorWithKeyB(sector, companyKey); } } @@ -276,7 +294,7 @@ //鑾峰彇鍐欑殑鎵囧尯鐨勫潡鐨勬暟閲� int blockCount = mfc.getBlockCountInSector(sector); int blockIndex = mfc.sectorToBlock(sector); - for (int block = 0; block < blockCount ; block++) { + for (int block = 0; block < blockCount; block++) { // 璺宠繃绗� 0 鎵囧尯鐨勭 0 鍧� if (sector == 0 && block == 0) { blockIndex++; @@ -289,7 +307,6 @@ mfc.writeBlock(blockIndex, initDataBytes); } //鍐欏崱 - blockIndex++; } } diff --git a/qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml b/qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml index d98d40e..c5a814e 100644 --- a/qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml +++ b/qiheonlinelibrary/src/main/res/layout/activity_new_card_qhl.xml @@ -61,7 +61,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:text="" + android:text="娴嬭瘯23" android:textSize="@dimen/new_card_size" /> <ImageView @@ -91,7 +91,7 @@ android:digits="0123456789Xx" android:inputType="text" android:maxLength="18" - android:text="" + android:text="130107199210160011" android:textSize="@dimen/new_card_size" /> @@ -148,7 +148,7 @@ android:layout_height="wrap_content" android:inputType="number" android:maxLength="11" - android:text="" + android:text="15802220723" android:textSize="@dimen/new_card_size" /> </LinearLayout> -- Gitblit v1.8.0