From 9c11fb9a45b0f1ff2a86eb139078e5361216434b Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 29 十一月 2023 14:59:10 +0800 Subject: [PATCH] 读取模拟卡修改后注释(未完成) --- app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java | 181 +++++++++++++++++---------------------------- 1 files changed, 69 insertions(+), 112 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 48f91a6..964df1c 100644 --- a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java +++ b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java @@ -3,11 +3,9 @@ import android.content.Intent; import android.nfc.NfcAdapter; import android.os.Bundle; -import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.View; - import com.dayu.recharge.card.ConfigurationPowerCard; import com.dayu.recharge.card.DomainCard; @@ -27,6 +25,7 @@ import com.dayu.recharge.utils.MyCommon; import com.dayu.recharge.utils.SocketUtil; import com.dayu.recharge.utils.TipUtil; +import com.dayu.recharge.view.ProgressDialog; import java.util.Arrays; import java.util.Calendar; @@ -74,7 +73,7 @@ redCardBinding.redRemainderBlance.setText("鍓╀綑閲戦锛�" + MornyUtil.changeF2Y(blance) + "鍏�"); redCardBinding.redStatu.setText("鍗$姸鎬侊細" + statu); if (userCard != null) { - redCardBinding.redInitCode.setText("鐢ㄦ埛娉ㄥ唽缂栧彿锛�" + userCard.getInitPeasantCode()); + redCardBinding.redInitCode.setText( userCard.getInitPeasantCode()); Calendar calendar = userCard.getRechargeDate(); if (calendar != null) { int year = calendar.get(Calendar.YEAR); @@ -95,150 +94,107 @@ @Override public void onNewIntent(Intent intent) { - super.onNewIntent(intent); this.intent = intent; - startAnim(); + ProgressDialog.show(this); if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { readAllData(intent); } + super.onNewIntent(intent); } /** * 璇诲彇鍏ㄩ儴鏁版嵁 */ - public void readAllData(Intent intent) { + public void readAllData(Intent intent) { NfcReadHelper.getInstence(intent) - .getAllData(new NfcReadHelper.NFCCallListback() { + .getOneSectorData(new NfcReadHelper.NFCCallListback() { @Override - public void callBack(Map<String, List<byte[]>> data) { - Message message = new Message(); + public void callBack(List<byte[]> data) { //鑾峰彇1鎵囧尯鏁版嵁 - List<byte[]> oneSector = data.get("1"); - if (oneSector != null && oneSector.size() > 0) { - byte cardType = oneSector.get(0)[0]; + if (data != null && data.size() > 0) { + byte cardType = data.get(0)[0]; String cardTypeStr = HexUtil.byteToHex(cardType); 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; + userCard = UserCard.getBean(data); + selectBalance(userCard.getInitPeasantCode()); break; case MyCommon.MANAGE_CRAD: - message.what = MANAGE_CRAD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓虹鐞嗗崱"); + stopAnim(); break; case MyCommon.CLEAN_CARD_TYPE: - message.what = CLEAN_CARD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓烘竻闆跺崱"); + stopAnim(); break; case MyCommon.REGISTERED_CARD_TYPE: - message.what = REGISTERED_CARD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓洪噸鏂版敞鍐岃澶囧崱"); + stopAnim(); + break; case MyCommon.CLEAN_ALL_USER_CARD_TYPE: - message.what = CLEAN_ALL_USER; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓哄垹闄ゅ叏閮ㄧ敤鎴峰崱"); + stopAnim(); break; case MyCommon.DOMAIN_CARD_TYPE: - message.what = DOMAIN_CARD; - message.obj = oneSector; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓鸿缃煙鍚嶅崱"); + DomainCard domainCard = DomainCard.toBean(data); + redCardBinding.readCardDataTV.setText("搴忓彿锛�" + domainCard.getDomainNumber() + "\n" + "鍩熷悕锛�" + domainCard.getDomainName() + "\n" + "绔彛鍙凤細" + domainCard.getPort()); + stopAnim(); break; case MyCommon.TEST_CARD_TYPE: - message.what = TEST_CARD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓烘祴璇曞崱"); + stopAnim(); break; case MyCommon.CONFIGURATION_CARD_TYPE: - message.what = CONFIGURATION_CARD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓洪厤缃澶囨敞鍐屼俊鎭崱"); + stopAnim(); break; case MyCommon.CONFIGURATION_POWER_CARD_TYPE: - message.what = CONFIGURATION_POWER_CARD; - message.obj = oneSector.get(0); + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠閰嶇疆姘存车鍔熺巼鍗�"); + ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(data.get(0)); + redCardBinding.readCardDataTV.setText(powerCard.getPower()); + stopAnim(); + break; + default: + TipUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); + stopAnim(); break; } } else { - message.what = MyCommon.ERROR; + TipUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); + stopAnim(); } - handler.sendMessage(message); - } + } @Override public void error(int code) { - Message message = new Message(); - message.what = code; - handler.sendMessage(message); + switch (code) { + case MyCommon.ERROR_MOVE: + stopAnim(); + TipUtil.show("杩炴帴涓柇锛岃閲嶆柊璐村悎鍗$墖"); + break; + default: + stopAnim(); + TipUtil.show("鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒"); + } } }); } - Handler handler = new Handler(new Handler.Callback() { - @Override - public boolean handleMessage(Message msg) { - switch (msg.what) { - case USER_CRAD: - selectBalance(userCard.getInitPeasantCode()); - break; - case MANAGE_CRAD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓虹鐞嗗崱"); - stopAnim(); - break; - case CLEAN_CARD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓烘竻闆跺崱"); - stopAnim(); - break; - case REGISTERED_CARD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓洪噸鏂版敞鍐岃澶囧崱"); - stopAnim(); - break; - case CLEAN_ALL_USER: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓哄垹闄ゅ叏閮ㄧ敤鎴峰崱"); - stopAnim(); - break; - 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(); - TipUtil.show("杩炴帴涓柇锛岃閲嶆柊璐村悎鍗$墖"); - break; - default: - TipUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); - stopAnim(); - break; - } - return false; - } - }); private void viweGone(boolean isUSerCard) { redCardBinding.readImgLL.setVisibility(View.GONE); @@ -252,14 +208,9 @@ } - void startAnim() { - redCardBinding.avi.setVisibility(View.VISIBLE); - redCardBinding.avi.show(); - // or avi.smoothToShow(); - } void stopAnim() { - redCardBinding.avi.hide(); + ProgressDialog.dismiss(); // or avi.smoothToHide(); } @@ -283,12 +234,18 @@ try { stateText = new StringBuffer(); - //閲戦 - byte[] blanceByte = Arrays.copyOfRange(readData.getBodyBytes(), 3, 7); - int balance = SocketUtil.get16to10LowHigh(blanceByte); - //濮撳悕 - byte[] nameByte = Arrays.copyOfRange(readData.getBodyBytes(), 7, 19); - String name = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte)); + int balance = 0; + String name = null; + try { + //閲戦 + byte[] blanceByte = Arrays.copyOfRange(readData.getBodyBytes(), 3, 7); + balance = SocketUtil.get16to10LowHigh(blanceByte); + //濮撳悕 + byte[] nameByte = Arrays.copyOfRange(readData.getBodyBytes(), 7, 19); + name = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte)); + } catch (Exception e) { + e.printStackTrace(); + } String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]); //BCD鐮�00鍚敤 01绂佺敤 02闅跺睘淇℃伅涓嶇 03鏃犳鍗′俊鎭� 04鍏跺畠s if ("00".equals(state)) { -- Gitblit v1.8.0