package com.dayu.qihealonelibrary.activity; import android.content.Intent; import android.nfc.NfcAdapter; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import com.dayu.baselibrary.tools.HexUtil; import com.dayu.baselibrary.utils.MornyUtil; import com.dayu.baselibrary.utils.TipUtil; import com.dayu.qihealonelibrary.card.BlackCard; import com.dayu.qihealonelibrary.card.ConfigurationPowerCard; import com.dayu.qihealonelibrary.card.DomainCard; import com.dayu.qihealonelibrary.card.ElectricPriceCard; import com.dayu.qihealonelibrary.card.RegionCard; import com.dayu.qihealonelibrary.card.UserCard; import com.dayu.qihealonelibrary.databinding.ActivityRedCardBinding; import com.dayu.qihealonelibrary.tools.NfcReadHelper; import com.dayu.qihealonelibrary.utils.MyCommon; import com.dayu.qihealonelibrary.view.ProgressDialog; import java.util.Calendar; import java.util.List; /** * Copyright (C), 2023, * Author: zuo * Date: 2023-11-10 19:52 * Description: 读卡界面 */ public class ReadCardAcitivy extends BaseNfcActivity { volatile UserCard userCard; ActivityRedCardBinding redCardBinding; Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); redCardBinding = ActivityRedCardBinding.inflate(LayoutInflater.from(this)); setContentView(redCardBinding.getRoot()); } private void setUserData(String userName, int blance, String statu) { viweGone(true); redCardBinding.redName.setText("用户姓名:" + userName); redCardBinding.redRemainderBlance.setText("剩余金额:" + MornyUtil.changeF2Y(blance) + "元"); redCardBinding.redStatu.setText("卡状态:" + statu); if (userCard != null) { Calendar calendar = userCard.getRechargeDate(); if (calendar != null) { int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); // 月份从0开始,所以需要加1 int day = calendar.get(Calendar.DAY_OF_MONTH); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); redCardBinding.redRechargeDate.setText("本卡最后购水日期:" + year + month + day + " " + hour + ":" + minute + ":" + second); } else { redCardBinding.redRechargeDate.setText("本卡最后购水日期:无"); } redCardBinding.redRechargeNumber.setText("本卡充值次数:" + userCard.getRechargeTimes() + ""); } } @Override public void onNewIntent(Intent intent) { this.intent = intent; ProgressDialog.show(this); if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { readAllData(intent); } super.onNewIntent(intent); } /** * 读取全部数据 */ public void readAllData(Intent intent) { NfcReadHelper.getInstence(intent, this) .getOneSectorData(new NfcReadHelper.NFCCallListback() { @Override public void callBack(List data) { //获取1扇区数据 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(data); break; case MyCommon.MANAGE_CRAD: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为管理卡"); stopAnim(); break; case MyCommon.CLEAN_CARD_TYPE: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为清零卡"); stopAnim(); break; case MyCommon.REGISTERED_CARD_TYPE: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为重新注册设备卡"); stopAnim(); break; case MyCommon.CLEAN_ALL_USER_CARD_TYPE: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为删除全部用户卡"); stopAnim(); break; case MyCommon.DOMAIN_CARD_TYPE: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为设置域名卡"); DomainCard domainCard = DomainCard.toBean(data); assert domainCard != null; redCardBinding.readCardDataTV.setText("序号:" + domainCard.getDomainNumber() + "\n" + "域名:" + domainCard.getDomainName() + "\n" + "端口号:" + domainCard.getPort()); stopAnim(); break; case MyCommon.TEST_CARD_TYPE: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为测试卡"); stopAnim(); break; case MyCommon.CONFIGURATION_CARD_TYPE: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为配置设备注册信息卡"); stopAnim(); break; case MyCommon.CONFIGURATION_POWER_CARD_TYPE: viweGone(false); redCardBinding.readCardTypeTV.setText("当前配置水泵功率卡"); ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(data.get(0)); redCardBinding.readCardDataTV.setText(powerCard.getPower()); stopAnim(); break; case MyCommon.BLACK: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为黑卡"); BlackCard blackCard = BlackCard.getBean(data); redCardBinding.readCardDataTV.setText("当前黑卡用户号为:" + blackCard.getBlackCard()); break; case MyCommon.REGION: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为区域表号卡"); RegionCard regionCard = RegionCard.getBean(data); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("区域地址:").append(regionCard.getRegion()).append("\n"); stringBuilder.append("控制器编号:").append(regionCard.getControllerCodel()).append("\n"); redCardBinding.readCardDataTV.setText(stringBuilder.toString()); break; case MyCommon.ELECTRIC_PRICE: viweGone(false); redCardBinding.readCardTypeTV.setText("当前为电量单价卡"); ElectricPriceCard electricPriceCard = ElectricPriceCard.getBean(data); StringBuilder electricPriceBuilder = new StringBuilder(); electricPriceBuilder.append("电量单价:").append(electricPriceCard.getElectricPrice()).append("\n"); redCardBinding.readCardDataTV.setText(electricPriceBuilder.toString()); break; default: TipUtil.show(ReadCardAcitivy.this, "卡片无法识别"); stopAnim(); break; } } else { TipUtil.show(ReadCardAcitivy.this, "卡片无法识别"); stopAnim(); } } @Override public void error(int code) { switch (code) { case MyCommon.ERROR_MOVE: stopAnim(); TipUtil.show("连接中断,请重新贴合卡片"); break; default: stopAnim(); TipUtil.show("卡片识别错误,请重试!"); } } }); } private void viweGone(boolean isUSerCard) { redCardBinding.readImgLL.setVisibility(View.GONE); if (isUSerCard) { redCardBinding.readCardTypeLL.setVisibility(View.GONE); redCardBinding.readUserLL.setVisibility(View.VISIBLE); } else { redCardBinding.readCardTypeLL.setVisibility(View.VISIBLE); redCardBinding.readUserLL.setVisibility(View.GONE); } } void stopAnim() { ProgressDialog.dismiss(); // or avi.smoothToHide(); } }