左晓为主开发手持机充值管理机
zuoxiao
2024-03-26 ebc06a3ae3a42bd6ac1359a59c55d5e6f1a0e2f0
app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
@@ -3,7 +3,7 @@
import android.content.Intent;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.Message;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -30,7 +30,6 @@
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
/**
 * Copyright (C), 2023,
@@ -39,20 +38,6 @@
 * Description: 读卡界面
 */
public class ReadCardAcitivy extends BaseNfcActivity {
    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;
    volatile UserCard userCard;
    ActivityRedCardBinding redCardBinding;
@@ -72,8 +57,9 @@
        redCardBinding.redName.setText("用户姓名:" + userName);
        redCardBinding.redRemainderBlance.setText("剩余金额:" + MornyUtil.changeF2Y(blance) + "元");
        redCardBinding.redStatu.setText("卡状态:" + statu);
        redCardBinding.redAddressCode.setText("地址码:" + userCard.getAddressCode());
        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);
@@ -107,7 +93,7 @@
     */
    public void readAllData(Intent intent) {
        NfcReadHelper.getInstence(intent)
        NfcReadHelper.getInstence(intent, this)
                .getOneSectorData(new NfcReadHelper.NFCCallListback() {
                    @Override
                    public void callBack(List<byte[]> data) {
@@ -218,14 +204,18 @@
     * @param initPeasantCode 农户注册编号
     */
    private void selectBalance(String initPeasantCode) {
        String initCode = DeviceNumberUtils.getDeviceNumber();
        if (TextUtils.isEmpty(initCode)) {
            TipUtil.show("设备未注册");
            return;
        }
        BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean();
        requestBean.setAFN("94");
        requestBean.setControl("01");
        String initCode = DeviceNumberUtils.getDeviceNumber();
        requestBean.setInitCode(initCode);
        requestBean.setInitPeasantCode(initPeasantCode);
        requestBean.setXuLie(SocketUtil.getXuLie(this));
        SocketNet.getInstance().sendTestMessage(requestBean.pack(), new SocketCallBack() {
        SocketNet.getInstance().sendTestMessage(requestBean.pack(), "94",new SocketCallBack() {
            @Override
            public void onSocketResponse(SocketData readData) {
                if (CRC8.isCRC8(readData.getOriginDataBytes())) {
@@ -234,24 +224,30 @@
                    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)) {
                            userCard.setBalance(balance);
                            userCard.setState("00");
                            WriteCardUtils.setUser(intent, userCard);
                            WriteCardUtils.setUser(intent, userCard, ReadCardAcitivy.this);
                            stateText.append("启用");
                        } else if ("01".equals(state)) {
                            userCard.setBalance(balance);
                            userCard.setState("01");
                            WriteCardUtils.setUser(intent, userCard);
                            WriteCardUtils.setUser(intent, userCard, ReadCardAcitivy.this);
                            stateText.append("禁用");
                        } else if ("02".equals(state)) {
                            stateText.append("隶属信息不符");
@@ -275,10 +271,10 @@
            @Override
            public void onSocketError(int code, String msg) {
                stopAnim();
                TipUtil.show(ReadCardAcitivy.this, msg);
            }
        });
    }
}