From 6a5879320dfac43155d024814a0a4d794a612696 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 21 八月 2024 13:52:14 +0800 Subject: [PATCH] 齐河联网版程序除补卡相关逻辑 --- qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java | 73 ++++++++++++++++++++++++++++++++++++ 1 files changed, 73 insertions(+), 0 deletions(-) diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java index 4abdceb..3517fcb 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java +++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java @@ -241,6 +241,79 @@ } /** + * 鍒濆鍖栧崱 + * + * @return + */ + public boolean initCard() { + try { + MifareClassic mfc = MifareClassic.get(tag); + if (null != mfc) { + try { + //杩炴帴NFC + mfc.connect(); + //鑾峰彇鎵囧尯鏁伴噺 + int count = mfc.getSectorCount(); + byte[] data = new byte[16]; + String initData = "FFFFFFFFFFFFFF078069FFFFFFFFFFFF"; + byte[] initDataBytes = HexUtil.hexToByteArray(initData); + for (int sector = 0; sector < count; sector++) { + //楠岃瘉鎵囧尯瀵嗙爜 + boolean isOpen = mfc.authenticateSectorWithKeyA(sector, defauleKey); + if (!isOpen) { + isOpen = mfc.authenticateSectorWithKeyA(sector, companyKey2); + if (isOpen){ + mfc.authenticateSectorWithKeyB(sector, companyKey2); + } + } + if (!isOpen) { + isOpen = mfc.authenticateSectorWithKeyA(sector, companyKey); + if (isOpen){ + mfc.authenticateSectorWithKeyB(sector, companyKey); + } + } + if (isOpen) { + //鑾峰彇鍐欑殑鎵囧尯鐨勫潡鐨勬暟閲� + int blockCount = mfc.getBlockCountInSector(sector); + int blockIndex = mfc.sectorToBlock(sector); + for (int block = 0; block < blockCount ; block++) { + // 璺宠繃绗� 0 鎵囧尯鐨勭 0 鍧� + if (sector == 0 && block == 0) { + blockIndex++; + continue; + } + + if (block < 3) { + mfc.writeBlock(blockIndex, data); + } else { + mfc.writeBlock(blockIndex, initDataBytes); + } + //鍐欏崱 + + blockIndex++; + } + } + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + try { + mfc.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return false; + } + + /** * 杩斿洖鐩戝惉绫� */ public interface NFCCallback { -- Gitblit v1.8.0