| | |
| | | import android.content.Intent; |
| | | import android.nfc.NfcAdapter; |
| | | import android.os.Bundle; |
| | | import android.text.TextUtils; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | |
| | |
| | | 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.databinding.ActivityRedCardQhaBinding; |
| | | import com.dayu.qihealonelibrary.dbBean.UserCardBean; |
| | | import com.dayu.qihealonelibrary.tools.NfcReadHelper; |
| | | |
| | | import com.dayu.qihealonelibrary.utils.MyCommon; |
| | | import com.dayu.qihealonelibrary.utils.CardCommon; |
| | | import com.dayu.qihealonelibrary.view.ProgressDialog; |
| | | |
| | | import java.util.Calendar; |
| | |
| | | public class ReadCardAcitivy extends BaseNfcActivity { |
| | | |
| | | volatile UserCard userCard; |
| | | ActivityRedCardBinding redCardBinding; |
| | | ActivityRedCardQhaBinding redCardBinding; |
| | | |
| | | |
| | | Intent intent; |
| | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | | redCardBinding = ActivityRedCardBinding.inflate(LayoutInflater.from(this)); |
| | | redCardBinding = ActivityRedCardQhaBinding.inflate(LayoutInflater.from(this)); |
| | | setContentView(redCardBinding.getRoot()); |
| | | } |
| | | |
| | | |
| | | private void setUserData(String userName, int blance, String statu) { |
| | | private void setUserData(String userName, String statu, String cardNumber) { |
| | | 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); |
| | | redCardBinding.redRechargeDate.setText("本卡最后购水日期:" + year + "年" + month + "月" + day + "日"); |
| | | } else { |
| | | redCardBinding.redRechargeDate.setText("本卡最后购水日期:无"); |
| | | } |
| | | |
| | | redCardBinding.redInitCode.setText(cardNumber); |
| | | redCardBinding.redRechargeNumber.setText("本卡充值次数:" + userCard.getRechargeTimes() + ""); |
| | | redCardBinding.redTotalWater.setText("总用水量:" + userCard.getTotalWater()); |
| | | redCardBinding.redTotalPower.setText("总用电量:" + userCard.getTotalElectric()); |
| | | redCardBinding.redRemainderBlance.setText("剩余金额:" + MornyUtil.changeF2Y(userCard.getBalance()) + "元"); |
| | | redCardBinding.redRemainderWater.setText("剩余水量:" + userCard.getSurplusWater()); |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | |
| | | public void readAllData(Intent intent) { |
| | | NfcReadHelper.getInstence(intent, this) |
| | | .getOneSectorData(new NfcReadHelper.NFCCallListback() { |
| | | @Override |
| | | public void callBack(List<byte[]> 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; |
| | | } |
| | | |
| | | String cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber(); |
| | | String cardNumber = null; |
| | | String[] cardTypes = cardType.split(","); |
| | | if (cardTypes != null && cardTypes.length == 2) { |
| | | cardNumber = cardType.split(",")[0]; |
| | | cardType = cardType.split(",")[1]; |
| | | } |
| | | List<byte[]> data = NfcReadHelper.getInstence(intent, this).getOnesectorData(); |
| | | String state = ""; |
| | | if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_1)) { |
| | | state = "终端写卡"; |
| | | } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_2)) { |
| | | state = "刷卡开泵后"; |
| | | } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_3)) { |
| | | state = "叠加充值"; |
| | | } |
| | | switch (cardType) { |
| | | case CardCommon.USER_CARD_TYPE_1: |
| | | case CardCommon.USER_CARD_TYPE_2: |
| | | case CardCommon.USER_CARD_TYPE_3: |
| | | |
| | | if (!data.isEmpty()) { |
| | | if (!TextUtils.isEmpty(cardNumber)) { |
| | | userCard = UserCard.getBean(data); |
| | | List<UserCardBean> userCardBeans = baseDao.userCardDao().findUserName(cardNumber); |
| | | if (userCardBeans != null && !userCardBeans.isEmpty()) { |
| | | UserCardBean userName = userCardBeans.get(0); |
| | | setUserData(userName.getUserName(), state, cardNumber); |
| | | } else { |
| | | TipUtil.show(ReadCardAcitivy.this, "卡片无法识别"); |
| | | stopAnim(); |
| | | setUserData("未查询到用户名", state, cardNumber); |
| | | } |
| | | } else { |
| | | |
| | | } |
| | | } else { |
| | | TipUtil.show("卡片识别错误,请重试!"); |
| | | } |
| | | |
| | | @Override |
| | | public void error(int code) { |
| | | switch (code) { |
| | | case MyCommon.ERROR_MOVE: |
| | | stopAnim(); |
| | | TipUtil.show("连接中断,请重新贴合卡片"); |
| | | break; |
| | | default: |
| | | stopAnim(); |
| | | TipUtil.show("卡片识别错误,请重试!"); |
| | | } |
| | | } |
| | | }); |
| | | break; |
| | | case CardCommon.MANAGE_CRAD: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为管理卡"); |
| | | break; |
| | | case CardCommon.CLEAN_CARD_TYPE: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为清零卡"); |
| | | break; |
| | | case CardCommon.REGISTERED_CARD_TYPE: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为重新注册设备卡"); |
| | | break; |
| | | case CardCommon.CLEAN_ALL_USER_CARD_TYPE: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为删除全部用户卡"); |
| | | break; |
| | | case CardCommon.DOMAIN_CARD_TYPE: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为设置域名卡"); |
| | | if (!data.isEmpty()) { |
| | | DomainCard domainCard = DomainCard.toBean(data); |
| | | assert domainCard != null; |
| | | redCardBinding.readCardDataTV.setText("序号:" + domainCard.getDomainNumber() + "\n" + "域名:" + domainCard.getDomainName() + "\n" + "端口号:" + domainCard.getPort()); |
| | | } else { |
| | | TipUtil.show("卡片识别错误,请重试!"); |
| | | } |
| | | break; |
| | | case CardCommon.TEST_CARD_TYPE: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为测试卡"); |
| | | break; |
| | | case CardCommon.CONFIGURATION_CARD_TYPE: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为配置设备注册信息卡"); |
| | | break; |
| | | case CardCommon.CONFIGURATION_POWER_CARD_TYPE: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前配置水泵功率卡"); |
| | | if (!data.isEmpty()) { |
| | | ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(data.get(0)); |
| | | redCardBinding.readCardDataTV.setText(powerCard.getPower()); |
| | | } else { |
| | | TipUtil.show("卡片识别错误,请重试!"); |
| | | } |
| | | break; |
| | | case CardCommon.BLACK: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为黑卡"); |
| | | BlackCard blackCard = BlackCard.getBean(data); |
| | | redCardBinding.readCardDataTV.setText("当前黑卡用户号为:" + blackCard.getBlackCard()); |
| | | break; |
| | | case CardCommon.REGION: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为区域表号卡"); |
| | | if (!data.isEmpty()) { |
| | | 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()); |
| | | } else { |
| | | TipUtil.show("卡片识别错误,请重试!"); |
| | | } |
| | | |
| | | break; |
| | | case CardCommon.ELECTRIC_PRICE: |
| | | viweGone(false); |
| | | redCardBinding.readCardTypeTV.setText("当前为电量单价卡"); |
| | | if (!data.isEmpty()) { |
| | | ElectricPriceCard electricPriceCard = ElectricPriceCard.getBean(data); |
| | | StringBuilder electricPriceBuilder = new StringBuilder(); |
| | | electricPriceBuilder.append("电量单价:").append(electricPriceCard.getElectricPrice()); |
| | | electricPriceBuilder.append("元"); |
| | | redCardBinding.readCardDataTV.setText(electricPriceBuilder.toString()); |
| | | } else { |
| | | TipUtil.show("卡片识别错误,请重试!"); |
| | | } |
| | | break; |
| | | default: |
| | | TipUtil.show(ReadCardAcitivy.this, "卡片无法识别"); |
| | | break; |
| | | } |
| | | stopAnim(); |
| | | |
| | | } |
| | | |
| | | |