左晓为主开发手持机充值管理机
zuoxiao
2023-11-23 50f6dd3b617f769e7fc6094c2dd0752747541489
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;
@@ -96,12 +94,12 @@
    @Override
    public void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        this.intent = intent;
        ProgressDialog.show(this);
        if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
            readAllData(intent);
        }
        super.onNewIntent(intent);
    }
    /**
@@ -110,136 +108,93 @@
    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);