左晓为主开发手持机充值管理机
app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -5,7 +5,9 @@
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
import com.dayu.recharge.MyApplication;
@@ -41,6 +43,9 @@
import com.dayu.recharge.utils.MyCommon;
import com.dayu.recharge.utils.SocketUtil;
import com.dayu.recharge.utils.TipUtil;
import com.dayu.recharge.view.ConfirmDialog;
import com.dayu.recharge.view.ProgressDialog;
import com.dayu.recharge.view.TitleBar;
import com.tencent.bugly.crashreport.CrashReport;
import java.util.Arrays;
@@ -53,7 +58,7 @@
 * Description: nfc写卡界面
 */
public class NFCWreatActivity extends BaseNfcActivity {
    public static String TAG = "NFCWreatActivity";
    boolean cleanFlag = false;
    boolean userFlag = false;
@@ -69,6 +74,11 @@
    boolean configDeviceRegiestFlag = false;
    boolean configPowerFlag = false;
    /**
     * 是否不再验证用户直接写卡
     */
    boolean isAgainWrite = false;
    UserCardBean userCardBean;
@@ -103,6 +113,7 @@
    //充值通信是否完成
    boolean rechargeIsOk = false;
    ActivityWriteTextBinding binding;
    ConfirmDialog confirmDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -111,12 +122,61 @@
            binding = ActivityWriteTextBinding.inflate(LayoutInflater.from(this));
            setContentView(binding.getRoot());
            nfcWreatActivity = this;
            setData();
            getData();
            baseApp = (MyApplication) getApplication();
        } catch (Exception e) {
            e.printStackTrace();
            CrashReport.postCatchedException(e);
        }
    }
    private void setData() {
        titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE, v -> {
            //处理因用户误操作返回导致不能写卡的问题,添加二次确认
            back();
        });
    }
    private void back() {
        if (isUser) {
            confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> {
                confirmDialog.dismiss();
                myFinish();
            });
            confirmDialog.show();
        } else if (!TextUtils.isEmpty(morny)) {
            confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> {
                confirmDialog.dismiss();
                myFinish();
            });
            confirmDialog.show();
        } else {
            finish();
        }
    }
    private void myFinish() {
        if (NewCardActivity.newCardActivity != null) {
            NewCardActivity.newCardActivity.finish();
        }
        if (RechargeActivity.rechargeActivity != null) {
            RechargeActivity.rechargeActivity.finish();
        }
        NFCWreatActivity.nfcWreatActivity.finish();
    }
    //点击两次退出程序 有时间间隔 间隔内点击则退出程序 否则 则提示
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            back();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
@@ -199,6 +259,8 @@
            binding.textView.setTextColor(getResources().getColor(R.color.red));
        } else if (cardType.equals("-1")) {
            TipUtil.show(NFCWreatActivity.this, "请勿移动卡片,读卡失败请重试!!");
        } else if (cardType.equals("-2")) {
            TipUtil.show(NFCWreatActivity.this, "读卡失败,请检查卡是否是用户卡");
        } else {
            Log.i("NFCWreatActivity", "olduserCard!=null  saveData");
            saveData();
@@ -217,7 +279,6 @@
                    || configureDeviceRegistrationCrad != null
                    || configurationPowerCard != null) {
                if (userCard != null && TextUtils.isEmpty(morny)) {
                    userFlag = WriteCardUtils.setUser(intent, userCard, this);
                }
                if (cleanCard != null) {
@@ -334,6 +395,7 @@
    }
    void startAnim() {
        binding.avi.setVisibility(View.VISIBLE);
        binding.avi.show();
        // or avi.smoothToShow();
    }
@@ -357,7 +419,7 @@
            rechargeRequestBean.setBalance(morny);
            rechargeRequestBean.setOrderId(SocketUtil.getOrderId(NFCWreatActivity.this));
            SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(), new SocketCallBack() {
            SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(),"95", new SocketCallBack() {
                @Override
                public void onSocketResponse(SocketData readData) {
@@ -375,7 +437,7 @@
                        //00启用01禁用02隶属信息不符03无此卡信息04其它
                        if ("00".equalsIgnoreCase(state)) {
                            rechargeIsOk = true;
                            binding.cardData.setText("充值通信完成,请帖卡充值");
                            binding.cardData.setText("充值"+morny+"元通信完成,请帖卡写卡");
                            rechargeBean = new RechargeBean();
                            rechargeBean.setDate(System.currentTimeMillis());
                            rechargeBean.setMorny(morny);
@@ -383,6 +445,7 @@
                            rechargeBean.setSerial(adminData.getSerial());
                            userCard.setRechargeDate(Calendar.getInstance());
                            userCard.setBalance(balance);
                            rechargeBean.setBalance(MornyUtil.changeF2Y(balance));
                            rechargeBean.setInitPeasantCode(initPeasantCode);
                            rechargeBean.setOrderID(orderId);
@@ -417,8 +480,11 @@
                @Override
                public void onSocketError(int code, String msg) {
                    stopAnim();
                    TipUtil.show(NFCWreatActivity.this, msg);
                    runOnUiThread(() -> {
                        stopAnim();
                        TipUtil.show(NFCWreatActivity.this, msg);
                    });
                }
            });
        } catch (Exception e) {
@@ -433,7 +499,7 @@
        UserCard userCardold = NfcReadHelper.getInstence(intent, this).getUserCardData();
        if (userCardold != null) {
            //判断是否充值的是一个卡
            if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode())) {
            if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode()) || isAgainWrite) {
                userCard.setState("00");
                userFlag = WriteCardUtils.setUser(intent, userCard, this);
                //   打印相关
@@ -441,12 +507,14 @@
                    setPrinterData(rechargeBean);
                    startDetailActivity(userName, "启用");
                } else {
                    TipUtil.show(NFCWreatActivity.this, "写卡失败,请重新再试");
                    isAgainWrite = true;
                    TipUtil.show(NFCWreatActivity.this, "写卡失败,请重新贴卡");
                }
            } else {
                TipUtil.show(NFCWreatActivity.this, "读取的卡和充值的卡不一致");
            }
        }
        stopAnim();
    }
    private void setmanageCard(Intent intent, final ManageCard manageCard) {
@@ -535,13 +603,7 @@
            detail.putExtra("morny", morny);
        }
        startActivity(detail);
        if (NewCardActivity.newCardActivity != null) {
            NewCardActivity.newCardActivity.finish();
        }
        if (RechargeActivity.rechargeActivity != null) {
            RechargeActivity.rechargeActivity.finish();
        }
        NFCWreatActivity.nfcWreatActivity.finish();
        myFinish();
    }
    /**
@@ -550,8 +612,9 @@
     * @param initPeasantCode 农户注册编号
     */
    private void selectBalance(String initPeasantCode) {
        Log.i(TAG, "补卡查询余额:农户注册编号 " + initPeasantCode);
        try {
            startAnim();
            BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean();
            requestBean.setAFN("94");
            requestBean.setControl("01");
@@ -559,7 +622,7 @@
            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())) {
@@ -597,12 +660,7 @@
                                //补卡逻辑
                                userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
                                if (userFlag) {
                                    TipUtil.show(NFCWreatActivity.this, "补卡成功", new TipUtil.TipListener() {
                                        @Override
                                        public void onCancle() {
                                            NFCWreatActivity.this.finish();
                                        }
                                    });
                                    TipUtil.show(NFCWreatActivity.this, "补卡成功", () -> NFCWreatActivity.this.finish());
                                }
                                return;
                            } else if ("01".equals(state)) {
@@ -630,23 +688,31 @@
                        //校验CRC错误
                        TipUtil.show(NFCWreatActivity.this, "开卡报文校验CRC错误");
                    }
                    stopAnim();
                }
                @Override
                public void onSocketError(int code, String msg) {
                    stopAnim();
                    TipUtil.show(NFCWreatActivity.this, msg);
                    runOnUiThread(() -> {
                        stopAnim();
                        TipUtil.show(NFCWreatActivity.this, msg);
                    });
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            CrashReport.postCatchedException(e);
            stopAnim();
            ProgressDialog.dismiss();
        }
    }
    protected void onDestroy() {
        super.onDestroy();
        ProgressDialog.dismiss();
        nfcWreatActivity = null;
    }
}