From 8e3719a37a6be0c9e244a0160b5f2f3331ca3122 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 30 十一月 2023 15:11:38 +0800 Subject: [PATCH] 支持虚拟卡读取 --- app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java | 181 ++++++++++++++++++++------------------------- 1 files changed, 81 insertions(+), 100 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 eef5996..19c3021 100644 --- a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java @@ -1,10 +1,12 @@ package com.dayu.recharge.activity; import android.content.Intent; +import android.nfc.Tag; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; +import android.util.Log; import android.view.LayoutInflater; import android.widget.Toast; @@ -40,6 +42,7 @@ import com.dayu.recharge.utils.DateUtil; import com.dayu.recharge.utils.DeviceNumberUtils; import com.dayu.recharge.utils.MornyUtil; +import com.dayu.recharge.utils.MyCommon; import com.dayu.recharge.utils.SocketUtil; import com.dayu.recharge.utils.TipUtil; import com.tencent.bugly.crashreport.CrashReport; @@ -72,14 +75,14 @@ boolean configPowerFlag = false; UserCardBean userCardBean; - + UserCard olduserCard; String morny; String userName; AdminDataBean adminData; RechargeBean rechargeBean; - Intent intent; - + // Intent intent; + Tag mTag; RegisteredCard registeredCard; CleanUserCard cleanUserCard; @@ -112,7 +115,6 @@ try { binding = ActivityWriteTextBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); - initView(); nfcWreatActivity = this; getData(); baseApp = (MyApplication) getApplication(); @@ -120,31 +122,6 @@ e.printStackTrace(); CrashReport.postCatchedException(e); } - } - - private void initView() { - handler = new Handler(new Handler.Callback() { - @Override - public boolean handleMessage(Message msg) { - switch (msg.what) { - - case HAS_USER://鍒ゆ柇宸插啓鍏ョ敤鎴� - binding.textView.setText("璇ュ崱宸茬粡鍐欏叆鐢ㄦ埛淇℃伅锛岃鏇存崲鍗$墖"); - binding.textView.setTextColor(getResources().getColor(R.color.red)); - stopAnim(); - break; - case NO_USER://娌℃湁鍐欒繃鐢ㄦ埛缁х画淇濆瓨 - saveData(); - break; - default: - stopAnim(); - TipUtil.show(NFCWreatActivity.this, "鍗$墖璇诲彇澶辫触"); - break; - - } - return false; - } - }); } @@ -215,37 +192,23 @@ * 妫�娴嬫槸鍚︽槸鐢ㄦ埛鍗★紝鍋囧鏄敤鎴峰崱鐨勮瘽闇�瑕佹娴嬪崱鐗囨槸鍚﹀凡缁忓紑杩囨埛锛屽亣濡傚凡寮�鎴峰垯鎶ラ敊涓嶈兘鍐嶅啓鍗″亣濡傛槸鐢ㄦ埛鍗¢渶瑕� */ private void checkHasUser() { - try { - NfcReadHelper.getInstence(intent) - .getData(1, 0, new NfcReadHelper.NFCCallByteback() { - @Override - public void callBack(byte[] data) { - Message message = new Message(); - String type = HexUtil.byteToHex(data[0]).toUpperCase(); - switch (type) { - case "A1": - case "A8": - case "A2": - message.what = HAS_USER; - break; - default: - message.what = NO_USER; - break; - } - handler.sendMessage(message); - } - @Override - public void error(int code) { - Message message = new Message(); - message.what = code; - handler.sendMessage(message); - } - }); - } catch (Exception e) { - e.printStackTrace(); - CrashReport.postCatchedException(e); + String cardType = NfcReadHelper.getInstence(mTag).getCradType(); + Log.i("NFCWreatActivity", "cardType=" + cardType); + if (cardType.equals(MyCommon.USER_CARD_TYPE_1) || + cardType.equals(MyCommon.USER_CARD_TYPE_2) || + cardType.equals(MyCommon.USER_CARD_TYPE_3) + ) { + binding.textView.setText("璇ュ崱宸茬粡鍐欏叆鐢ㄦ埛淇℃伅锛岃鏇存崲鍗$墖"); + binding.textView.setTextColor(getResources().getColor(R.color.red)); + } else if (cardType.equals("-1")) { + TipUtil.show(NFCWreatActivity.this, "璇峰嬁绉诲姩鍗$墖锛岃鍗″け璐ヨ閲嶈瘯锛侊紒"); + } else { + Log.i("NFCWreatActivity", "olduserCard!=null saveData"); + saveData(); } + + stopAnim(); } @@ -258,31 +221,33 @@ || configureDeviceRegistrationCrad != null || configurationPowerCard != null) { if (userCard != null && TextUtils.isEmpty(morny)) { - userFlag = WriteCardUtils.setUser(intent, userCard); + + userFlag = WriteCardUtils.setUser(mTag, userCard); } if (cleanCard != null) { - setClean(intent, cleanCard); + NFCWriteHelper.getInstence(mTag).changePasword(1); + setClean(mTag, cleanCard); } if (manageCard != null) { - setmanageCard(intent, manageCard); + setmanageCard(mTag, manageCard); } if (registeredCard != null) { - setRegisteredCard(intent, registeredCard); + setRegisteredCard(mTag, registeredCard); } if (cleanUserCard != null) { - setCleanUserCard(intent, cleanUserCard); + setCleanUserCard(mTag, cleanUserCard); } if (domainCard != null) { - setDomainCard(intent, domainCard); + setDomainCard(mTag, domainCard); } if (testCard != null) { - setTestCard(intent, testCard); + setTestCard(mTag, testCard); } if (configureDeviceRegistrationCrad != null) { - setConfigDeviceRegiest(intent, configureDeviceRegistrationCrad); + setConfigDeviceRegiest(mTag, configureDeviceRegistrationCrad); } if (configurationPowerCard != null) { - setConfigurationPower(intent, configurationPowerCard); + setConfigurationPower(mTag, configurationPowerCard); } if ((configPowerFlag || configDeviceRegiestFlag || testCardFlag || domainCrdFlag || userFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag || cleanUserCardFlag)) { try { @@ -290,11 +255,19 @@ //鐢ㄦ埛鍗� startDetailActivity(userCardBean.getUserName(), "鍚敤"); } else if (!TextUtils.isEmpty(morny)) { - NFCWreatActivity.this.finish(); - TipUtil.show("鍏呭�兼垚鍔�"); + TipUtil.show(NFCWreatActivity.this, "鍏呭�兼垚鍔�", new TipUtil.TipListener() { + @Override + public void onCancle() { + NFCWreatActivity.this.finish(); + } + }); } else { - NFCWreatActivity.this.finish(); - TipUtil.show("鍐欏崱鎴愬姛"); + TipUtil.show(NFCWreatActivity.this, "鍐欏崱鎴愬姛", new TipUtil.TipListener() { + @Override + public void onCancle() { + NFCWreatActivity.this.finish(); + } + }); } } catch (Exception e) { @@ -302,14 +275,10 @@ CrashReport.postCatchedException(e); } } else { - TipUtil.show("鍐欏崱澶辫触"); + TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触"); } stopAnim(); - } -// else if (!TextUtils.isEmpty(morny)) { -// -// } - else if (userCard == null && userCardBean != null) { + } else if (userCard == null && userCardBean != null) { //琛ュ崱閫昏緫 selectBalance(userCardBean.getInitPeasantCode()); } else { @@ -322,12 +291,14 @@ } } + @Override - public void onNewIntent(Intent intent) { - super.onNewIntent(intent); + public void physicalCardDoing(Tag tag) { + super.physicalCardDoing(tag); + mTag = tag; try { - this.intent = intent; startAnim(); + Log.i("NFCWreatActivity", "isUser:" + isUser); if (isUser) { checkHasUser(); } else if (isRecharge) { @@ -344,6 +315,12 @@ e.printStackTrace(); CrashReport.postCatchedException(e); } + } + + @Override + public void onNewIntent(Intent intent) { + super.onNewIntent(intent); + } @@ -428,7 +405,7 @@ rechargeBean.setSerial(adminData.getSerial()); userCard.setRechargeDate(Calendar.getInstance()); - rechargeBean.setBalance(MornyUtil.changeF2Y(balance + MornyUtil.changeY2F(morny)) + ""); + rechargeBean.setBalance(MornyUtil.changeF2Y(balance)); rechargeBean.setInitPeasantCode(initPeasantCode); rechargeBean.setOrderID(orderId); try { @@ -439,7 +416,7 @@ userCard.setRechargeTimes(userCard.getRechargeTimes() + 1); } else if ("01".equalsIgnoreCase(state)) { userCard.setState("01"); - userFlag = WriteCardUtils.setUser(intent, userCard); + userFlag = WriteCardUtils.setUser(mTag, userCard); NFCWreatActivity.this.finish(); TipUtil.show("鍏呭�兼姤鏂囬敊璇�-绂佺敤"); } else if ("02".equalsIgnoreCase(state)) { @@ -475,12 +452,12 @@ //寰�鍗″唴鍐欏厖鍊煎悗鐨勬暟鎹� private void rechargeWrratCard() { - UserCard userCardold = NfcReadHelper.getInstence(intent).getUserCardData(); + UserCard userCardold = NfcReadHelper.getInstence(mTag).getUserCardData(); if (userCardold != null) { //鍒ゆ柇鏄惁鍏呭�肩殑鏄竴涓崱 if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode())) { userCard.setState("00"); - userFlag = WriteCardUtils.setUser(intent, userCard); + userFlag = WriteCardUtils.setUser(mTag, userCard); // 鎵撳嵃鐩稿叧 if (userFlag) { setPrinterData(rechargeBean); @@ -496,7 +473,7 @@ } } - private void setmanageCard(Intent intent, final ManageCard manageCard) { + private void setmanageCard(Tag intent, final ManageCard manageCard) { manageCardFlag = NFCWriteHelper.getInstence(intent).writeData(manageCard.toZeroByte(), 1, 0); } @@ -506,7 +483,7 @@ * @param intent * @param clearOrInitCard */ - private void setClean(Intent intent, final CleanCard clearOrInitCard) { + private void setClean(Tag intent, final CleanCard clearOrInitCard) { cleanFlag = NFCWriteHelper.getInstence(intent).writeData(clearOrInitCard.toByte(), 1, 0); } @@ -517,7 +494,7 @@ * @param intent * @param registeredCard */ - private void setRegisteredCard(Intent intent, RegisteredCard registeredCard) { + private void setRegisteredCard(Tag intent, RegisteredCard registeredCard) { registeredFlag = NFCWriteHelper.getInstence(intent).writeData(registeredCard.toByte(), 1, 0); } @@ -527,7 +504,7 @@ * @param intent * @param cleanUserCard */ - private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) { + private void setCleanUserCard(Tag intent, CleanUserCard cleanUserCard) { cleanUserCardFlag = NFCWriteHelper.getInstence(intent).writeData(cleanUserCard.toByte(), 1, 0); } @@ -537,7 +514,7 @@ * @param intent * @param domainCard */ - private void setDomainCard(Intent intent, DomainCard domainCard) { + private void setDomainCard(Tag intent, DomainCard domainCard) { try { domainCrdFlag = NFCWriteHelper.getInstence(intent).writeData(domainCard.getZeroByte(), 1, 0); if (!domainCrdFlag) { @@ -554,16 +531,16 @@ } } - private void setTestCard(Intent intent, TestCard testCard) { + private void setTestCard(Tag intent, TestCard testCard) { testCardFlag = NFCWriteHelper.getInstence(intent).writeData(testCard.toByte(), 1, 0); } - private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) { + private void setConfigDeviceRegiest(Tag intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) { configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent).writeData(configureDeviceRegistrationCrad.toByte(), 1, 0); } - private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) { + private void setConfigurationPower(Tag intent, ConfigurationPowerCard configurationPowerCard) { try { configPowerFlag = NFCWriteHelper.getInstence(intent).writeData(configurationPowerCard.toByte(), 1, 0); } catch (Exception e) { @@ -610,16 +587,13 @@ @Override public void onSocketResponse(SocketData readData) { if (CRC8.isCRC8(readData.getOriginDataBytes())) { - StringBuffer stateText = null; - try { stateText = new StringBuffer(); String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]); //BCD鐮�00鍚敤 01绂佺敤 02闅跺睘淇℃伅涓嶇 03鏃犳鍗′俊鎭� 04鍏跺畠s if (userCard == null) { userCard = new UserCard(); userCard.setRechargeTimes(0); - ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst(); if (electricPriceBean != null) { userCard.setElectricityPrice(electricPriceBean.getPrice()); @@ -645,18 +619,21 @@ userCard.setBalance(balance); userCard.setState("00"); //琛ュ崱閫昏緫 - userFlag = WriteCardUtils.setUser(intent, userCard); + userFlag = WriteCardUtils.setUser(mTag, userCard); if (userFlag) { - NFCWreatActivity.this.finish(); - TipUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛"); + TipUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛", new TipUtil.TipListener() { + @Override + public void onCancle() { + NFCWreatActivity.this.finish(); + } + }); } return; } else if ("01".equals(state)) { stateText.append("绂佺敤"); userCard.setState("01"); userCard.setBalance(balance); - userFlag = WriteCardUtils.setUser(intent, userCard); - + userFlag = WriteCardUtils.setUser(mTag, userCard); startDetailActivity(name, stateText.toString()); } else if ("02".equals(state)) { @@ -692,4 +669,8 @@ } + protected void onDestroy() { + super.onDestroy(); + nfcWreatActivity = null; + } } \ No newline at end of file -- Gitblit v1.8.0