左晓为主开发手持机充值管理机
zuoxiao
2023-11-22 1ffa3cb19f95855d44fbc9485f4eb3286b12e359
app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
@@ -5,7 +5,6 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -14,8 +13,6 @@
import com.dayu.recharge.card.DomainCard;
import com.dayu.recharge.card.UserCard;
import com.dayu.recharge.databinding.ActivityRedCardBinding;
import com.dayu.recharge.dbBean.RechargeBean;
import com.dayu.recharge.dbBean.UserCardBean;
import com.dayu.recharge.net.SocketCallBack;
import com.dayu.recharge.net.SocketData;
import com.dayu.recharge.net.SocketNet;
@@ -23,13 +20,13 @@
import com.dayu.recharge.tools.BcdUtil;
import com.dayu.recharge.tools.HexUtil;
import com.dayu.recharge.tools.NfcReadHelper;
import com.dayu.recharge.tools.WriteCardUtils;
import com.dayu.recharge.utils.CRC8;
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.ToastUtil;
import com.dayu.recharge.utils.WSHelper;
import com.dayu.recharge.utils.TipUtil;
import java.util.Arrays;
import java.util.Calendar;
@@ -60,6 +57,8 @@
    volatile UserCard userCard;
    ActivityRedCardBinding redCardBinding;
    Intent intent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -96,6 +95,8 @@
    @Override
    public void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        this.intent = intent;
        startAnim();
        if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
            readAllData(intent);
@@ -105,7 +106,8 @@
    /**
     * 读取全部数据
     */
    private void readAllData(Intent intent) {
   public   void readAllData(Intent intent) {
        NfcReadHelper.getInstence(intent)
                .getAllData(new NfcReadHelper.NFCCallListback() {
                    @Override
@@ -227,10 +229,10 @@
                    break;
                case MyCommon.ERROR_MOVE:
                    stopAnim();
                    ToastUtil.show("连接中断,请重新贴合卡片");
                    TipUtil.show("连接中断,请重新贴合卡片");
                    break;
                default:
                    ToastUtil.show(ReadCardAcitivy.this, "卡片无法识别");
                    TipUtil.show(ReadCardAcitivy.this, "卡片无法识别");
                    stopAnim();
                    break;
            }
@@ -281,11 +283,23 @@
                    try {
                        stateText = new StringBuffer();
//                        stateText.append("状    态:");
                        //金额
                        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));
                        setUserData(name, balance, stateText.toString());
                        String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]);  //BCD码00启用 01禁用 02隶属信息不符 03无此卡信息 04其它s
                        if ("00".equals(state)) {
                            userCard.setBalance(balance);
                            userCard.setState("00");
                            WriteCardUtils.setUser(intent, userCard);
                            stateText.append("启用");
                        } else if ("01".equals(state)) {
                            userCard.setBalance(balance);
                            userCard.setState("01");
                            WriteCardUtils.setUser(intent, userCard);
                            stateText.append("禁用");
                        } else if ("02".equals(state)) {
                            stateText.append("隶属信息不符");
@@ -294,29 +308,22 @@
                        } else if ("04".equals(state)) {
                            stateText.append("其它");
                        }
                        //金额
                        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));
                        setUserData(name, balance, stateText.toString());
                        stopAnim();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                } else {
                    //校验CRC错误
                    ToastUtil.show(ReadCardAcitivy.this, "开卡报文校验CRC错误");
                    TipUtil.show(ReadCardAcitivy.this, "开卡报文校验CRC错误");
                }
                stopAnim();
            }
            @Override
            public void onSocketError(int code, String msg) {
                ToastUtil.show(ReadCardAcitivy.this, msg);
                TipUtil.show(ReadCardAcitivy.this, msg);
            }
        });