From 3502384043c282226c0dbc90a191806e007f1d17 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 15 十一月 2023 16:09:09 +0800 Subject: [PATCH] 添加nfc读取连接中断的处理 --- app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java | 202 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 134 insertions(+), 68 deletions(-) diff --git a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java index c524104..61e1b9f 100644 --- a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java +++ b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java @@ -10,6 +10,8 @@ import android.view.View; +import com.dayu.recharge.card.ConfigurationPowerCard; +import com.dayu.recharge.card.DomainCard; import com.dayu.recharge.card.UserCard; import com.dayu.recharge.databinding.ActivityRedCardBinding; import com.dayu.recharge.dbBean.RechargeBean; @@ -23,11 +25,13 @@ import com.dayu.recharge.tools.NfcReadHelper; import com.dayu.recharge.utils.CRC8; import com.dayu.recharge.utils.MornyUtil; +import com.dayu.recharge.utils.MyCommon; import com.dayu.recharge.utils.SocketUtil; import com.dayu.recharge.utils.ToastUtil; import com.dayu.recharge.utils.WSHelper; import java.util.Arrays; +import java.util.Calendar; import java.util.List; import java.util.Map; @@ -41,13 +45,19 @@ private static final int USER_CRAD = 1; private static final int MANAGE_CRAD = 2; + private static final int CLEAN_CARD = 3; + private static final int REGISTERED_CARD = 4; + private static final int CLEAN_ALL_USER = 5; + private static final int DOMAIN_CARD = 6; + private static final int TEST_CARD = 7; + + private static final int CONFIGURATION_CARD = 8; + + private static final int CONFIGURATION_POWER_CARD = 9; + private static final int PASS_WORD_CRAD = 10; - private static final int ERROR = -1; - UserCard userCard; - UserCardBean waterCard; - RechargeBean rechargeBean; - // 鍐滄埛娉ㄥ唽缂栧彿 + volatile UserCard userCard; ActivityRedCardBinding redCardBinding; @Override @@ -57,17 +67,29 @@ setContentView(redCardBinding.getRoot()); } - private void setData(String statu) { - String initCode = WSHelper.getInstance(this).get("initCode", ""); - if (TextUtils.isEmpty(initCode)) { - ToastUtil.show(this, "璁惧娉ㄥ唽鍙蜂负绌猴紝璇峰厛璁剧疆IP鍜岀鐞嗗憳鍦板潃"); - return; - } -// redCardBinding.redVillageNum.setText("璁惧搴忓垪鍙凤細" + initS.getANo() + ""); - redCardBinding.redName.setText("鐢� 鎴� 鍚嶏細" + rechargeBean.getUserName()); - redCardBinding.redRemainderMorny.setText("鍓╀綑閲戦锛�" + rechargeBean.getBalance() + "" + "鍏�"); - redCardBinding.redStatu.setText("鐘� 鎬侊細" + statu); + private void setUserData(String userName, int blance, String statu) { + viweGone(true); + redCardBinding.redName.setText("鐢ㄦ埛濮撳悕锛�" + userName); + redCardBinding.redRemainderBlance.setText("鍓╀綑閲戦锛�" + MornyUtil.changeF2Y(blance) + "鍏�"); + redCardBinding.redStatu.setText("鍗$姸鎬侊細" + statu); + if (userCard != null) { + redCardBinding.redInitCode.setText("鐢ㄦ埛娉ㄥ唽缂栧彿锛�" + userCard.getInitPeasantCode()); + Calendar calendar = userCard.getRechargeDate(); + if (calendar != null) { + int year = calendar.get(Calendar.YEAR); + int month = calendar.get(Calendar.MONTH); // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1 + int day = calendar.get(Calendar.DAY_OF_MONTH); + int hour = calendar.get(Calendar.HOUR_OF_DAY); + int minute = calendar.get(Calendar.MINUTE); + int second = calendar.get(Calendar.SECOND); + redCardBinding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細" + year + month + day + " " + hour + ":" + minute + ":" + second); + } else { + redCardBinding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細鏃�"); + } + + redCardBinding.redRechargeNumber.setText("鏈崱鍏呭�兼鏁帮細" + userCard.getRechargeTimes() + ""); + } } @@ -93,22 +115,52 @@ if (oneSector != null && oneSector.size() > 0) { byte cardType = oneSector.get(0)[0]; String cardTypeStr = HexUtil.byteToHex(cardType); -// switch (cardTypeStr){ -// case -// } + switch (cardTypeStr) { + case MyCommon.USER_CARD_TYPE_1: + case MyCommon.USER_CARD_TYPE_2: + case MyCommon.USER_CARD_TYPE_3: userCard = UserCard.getBean(oneSector); - message.what = USER_CRAD; + message.what = USER_CRAD; + break; + case MyCommon.MANAGE_CRAD: + message.what = MANAGE_CRAD; + break; + case MyCommon.CLEAN_CARD_TYPE: + message.what = CLEAN_CARD; + break; + case MyCommon.REGISTERED_CARD_TYPE: + message.what = REGISTERED_CARD; + break; + case MyCommon.CLEAN_ALL_USER_CARD_TYPE: + message.what = CLEAN_ALL_USER; + break; + case MyCommon.DOMAIN_CARD_TYPE: + message.what = DOMAIN_CARD; + message.obj = oneSector; + break; + case MyCommon.TEST_CARD_TYPE: + message.what = TEST_CARD; + break; + case MyCommon.CONFIGURATION_CARD_TYPE: + message.what = CONFIGURATION_CARD; + break; + case MyCommon.CONFIGURATION_POWER_CARD_TYPE: + message.what = CONFIGURATION_POWER_CARD; + message.obj = oneSector.get(0); + break; + } + } else { - message.what = ERROR; + message.what = MyCommon.ERROR; } handler.sendMessage(message); } @Override - public void error() { + public void error(int code) { Message message = new Message(); - message.what = ERROR; + message.what = code; handler.sendMessage(message); } }); @@ -119,63 +171,83 @@ public boolean handleMessage(Message msg) { switch (msg.what) { case USER_CRAD: - redCardBinding.readImgLL.setVisibility(View.GONE); - redCardBinding.readUserLL.setVisibility(View.VISIBLE); - redCardBinding.readSysLL.setVisibility(View.GONE); - redCardBinding.readCleanLL.setVisibility(View.GONE); - redCardBinding.readInitLL.setVisibility(View.GONE); -// selectBalance(newUserCard.getPeasantCode()); + selectBalance(userCard.getInitPeasantCode()); break; case MANAGE_CRAD: - redCardBinding.readImgLL.setVisibility(View.GONE); - redCardBinding.readUserLL.setVisibility(View.GONE); - redCardBinding.readSysLL.setVisibility(View.VISIBLE); - redCardBinding.readCleanLL.setVisibility(View.GONE); - redCardBinding.readInitLL.setVisibility(View.GONE); + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓虹鐞嗗崱"); stopAnim(); break; - case 3: - redCardBinding.readImgLL.setVisibility(View.GONE); - redCardBinding.readUserLL.setVisibility(View.GONE); - redCardBinding.readSysLL.setVisibility(View.GONE); - redCardBinding.readCleanLL.setVisibility(View.VISIBLE); - redCardBinding.readInitLL.setVisibility(View.GONE); + case CLEAN_CARD: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓烘竻闆跺崱"); stopAnim(); break; - case 4: - redCardBinding.readImgLL.setVisibility(View.GONE); - redCardBinding.readUserLL.setVisibility(View.GONE); - redCardBinding.readSysLL.setVisibility(View.GONE); - redCardBinding.readCleanLL.setVisibility(View.GONE); - redCardBinding.readInitLL.setVisibility(View.VISIBLE); + case REGISTERED_CARD: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓洪噸鏂版敞鍐岃澶囧崱"); stopAnim(); break; - case 5: - redCardBinding.readImgLL.setVisibility(View.GONE); - redCardBinding.readUserLL.setVisibility(View.GONE); - redCardBinding.readSysLL.setVisibility(View.GONE); - redCardBinding.readCleanLL.setVisibility(View.GONE); - redCardBinding.readInitLL.setVisibility(View.VISIBLE); - redCardBinding.readInitLL.setText("褰撳墠涓鸿鏀垮尯鍩熷崱"); + case CLEAN_ALL_USER: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓哄垹闄ゅ叏閮ㄧ敤鎴峰崱"); stopAnim(); break; - case 6: - redCardBinding.readImgLL.setVisibility(View.GONE); - redCardBinding.readUserLL.setVisibility(View.GONE); - redCardBinding.readSysLL.setVisibility(View.GONE); - redCardBinding.readCleanLL.setVisibility(View.GONE); - redCardBinding.readInitLL.setVisibility(View.VISIBLE); - redCardBinding.readInitLL.setText("褰撳墠涓鸿澶囧簭鍙峰崱"); + case DOMAIN_CARD: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓鸿缃煙鍚嶅崱"); + List<byte[]> data = (List<byte[]>) msg.obj; + DomainCard domainCard = DomainCard.toBean(data); + redCardBinding.readCardDataTV.setText("搴忓彿锛�" + domainCard.getDomainNumber() + "\n" + "鍩熷悕锛�" + domainCard.getDomainName() + "\n" + "绔彛鍙凤細" + domainCard.getPort()); stopAnim(); + break; + case TEST_CARD: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓烘祴璇曞崱"); + stopAnim(); + break; + case CONFIGURATION_CARD: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓洪厤缃澶囨敞鍐屼俊鎭崱"); + stopAnim(); + break; + case CONFIGURATION_POWER_CARD: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠閰嶇疆姘存车鍔熺巼鍗�"); + byte[] powerData = (byte[]) msg.obj; + ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(powerData); + redCardBinding.readCardDataTV.setText(powerCard.getPower()); + stopAnim(); + break; + case PASS_WORD_CRAD: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓哄瘑鐮佸崱"); + stopAnim(); + break; + case MyCommon.ERROR_MOVE: + stopAnim(); + ToastUtil.show("杩炴帴涓柇锛岃閲嶆柊璐村悎鍗$墖"); break; default: - ToastUtil.show(ReadCardAcitivy.this, "鍗$墖鏈敞鍐�"); + ToastUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); stopAnim(); + break; } - return false; } }); + + private void viweGone(boolean isUSerCard) { + redCardBinding.readImgLL.setVisibility(View.GONE); + if (isUSerCard) { + redCardBinding.readCardTypeLL.setVisibility(View.GONE); + redCardBinding.readUserLL.setVisibility(View.VISIBLE); + } else { + redCardBinding.readCardTypeLL.setVisibility(View.VISIBLE); + redCardBinding.readUserLL.setVisibility(View.GONE); + } + + } void startAnim() { redCardBinding.avi.setVisibility(View.VISIBLE); @@ -192,7 +264,6 @@ * @param initPeasantCode 鍐滄埛娉ㄥ唽缂栧彿 */ private void selectBalance(String initPeasantCode) { - BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean(); requestBean.setAFN("94"); requestBean.setControl("01"); @@ -230,12 +301,7 @@ String name = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte)); - rechargeBean = new RechargeBean(); - rechargeBean.setDate(System.currentTimeMillis()); - rechargeBean.setUserName(name); - rechargeBean.setBalance(MornyUtil.changeF2Y(balance) + ""); -// rechargeBean.setTotal_morn(ArithUtil.changeF2Y(userCard.getValue() + "")); - setData(stateText.toString()); + setUserData(name, balance, stateText.toString()); stopAnim(); } catch (Exception e) { e.printStackTrace(); -- Gitblit v1.8.0