From feb7add1979c830e0d940286242a7c489f2f8f96 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期五, 27 九月 2024 09:23:34 +0800 Subject: [PATCH] 优化NFC模块架构,将一些方法抽调到父类中。 --- qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java | 202 +++++++------------------------------------------ 1 files changed, 31 insertions(+), 171 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..c766431 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java +++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java @@ -8,9 +8,12 @@ import android.util.Log; import com.dayu.baselibrary.tools.HexUtil; +import com.dayu.baselibrary.tools.nfc.NfcWriteAdapter; import com.dayu.qiheonlinelibrary.card.UserCard; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; /** * @author zx @@ -18,16 +21,16 @@ * email 1058083107@qq.com * description */ -public class NFCWriteHelper extends BaseNFCHelper { +public class NFCWriteHelper extends QHBaseNFCHelper { - private Tag tag; private static NFCWriteHelper helper; - private static int PASSWORD_LENTH = 12; + private NfcWriteAdapter adapter; + public NFCWriteHelper(Intent intent, Activity activity) { super(activity); - this.tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); + adapter = new NfcWriteAdapter(intent, activity); } /** @@ -43,21 +46,6 @@ return helper; } - /** - * 璁剧疆NFC鍗$殑璇诲彇瀵嗙爜 - * - * @param str - * @return - */ - public NFCWriteHelper setReadPassword(String str) { - if (null != str && (str.length() <= PASSWORD_LENTH)) { - for (int i = 0; i < str.length(); i++) { - defauleKey[i] = (byte) str.charAt(i); - } - } - return helper; - } - /** * 鍐欏崱 @@ -66,54 +54,10 @@ * @param */ public boolean writeUserData(UserCard userCard) { - if (userCard != null) { - int a = 1; - try { - MifareClassic mfc = MifareClassic.get(tag); - if (null != mfc) { - try { - //杩炴帴NFC - mfc.connect(); - //楠岃瘉鎵囧尯瀵嗙爜 - boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey); - if (!isOpen) { - isOpen = mfc.authenticateSectorWithKeyA(a, companyKey); - } else { - //鍐欏崱鏃朵慨鏀规墍鏈夊瘑鐮� - changePasword(a, mfc); - } - if (isOpen) { - for (int b = 0; b < 3; b++) { - byte[] data; - if (b == 0) { - data = userCard.getZeroBytes(); - } else if (b == 1) { - data = userCard.getOneBytes(); - } else { - data = userCard.getTwoBytes(); - } - int bIndex = mfc.sectorToBlock(a); - //鍐欏崱 - mfc.writeBlock(bIndex + b, data); - } - return true; - } - return false; - } catch (Exception e) { - e.printStackTrace(); - return false; - } finally { - try { - mfc.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - return false; - } + try { + return adapter.writeUserData(userCard); + } catch (Exception e) { + e.printStackTrace(); } return false; } @@ -128,56 +72,10 @@ * @param */ public boolean writeData(byte[] str, int a, int b) { - Log.i("NFCWreatActivity", "writeData: a=" + a + " b=" + b); - if (str.length <= 16) { - try { - MifareClassic mfc = MifareClassic.get(tag); - if (null != mfc) { - try { - //杩炴帴NFC - mfc.connect(); - //鑾峰彇鎵囧尯鏁伴噺 - int count = mfc.getSectorCount(); - //濡傛灉浼犺繘鏉ョ殑鎵囧尯澶т簡鎴栬�呭皬浜嗙洿鎺ラ��鍑烘柟娉� - if (a > count - 1 || a < 0) { - return false; - } - //鑾峰彇鍐欑殑鎵囧尯鐨勫潡鐨勬暟閲� - int bCount = mfc.getBlockCountInSector(a); - //濡傛灉杈撳叆鐨勫潡澶т簡鎴栬�呭皬浜嗕篃鏄洿鎺ラ��鍑� - if (b > bCount - 1 || b < 0) { - return false; - } - //楠岃瘉鎵囧尯瀵嗙爜 - boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey); - if (!isOpen) { - isOpen = mfc.authenticateSectorWithKeyA(a, companyKey); - } else { - //鍐欏崱鏃朵慨鏀规墍鏈夊瘑鐮� - changePasword(a, mfc); - } - if (isOpen) { - int bIndex = mfc.sectorToBlock(a); - //鍐欏崱 - mfc.writeBlock(bIndex + b, str); - return true; - } - return false; - } catch (Exception e) { - e.printStackTrace(); - return false; - } finally { - try { - mfc.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - return false; - } + try { + return adapter.writeData(str, a, b); + } catch (Exception e) { + e.printStackTrace(); } return false; } @@ -190,65 +88,27 @@ * // * @param callback 杩斿洖鐩戝惉 */ public boolean changePasword(int a, MifareClassic mfc) { -// MifareClassic mfc = MifareClassic.get(tag); - byte[] data = new byte[16]; - if (null != mfc) { - try { -// mfc.connect(); -// int count = mfc.getSectorCount(); -// boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey); -// //楠岃瘉鏄惁鏄粯璁ゅ瘑鐮侊紝褰撻粯璁ゅ瘑鐮佹椂淇敼瀵嗙爜 -// if (isOpen) { - //灏嗗瘑鐮佽浆鎹负keyA - byte[] dataA = HexUtil.hexToByteArray(companyKeyA); - for (int i = 0; i < dataA.length; i++) { - data[i] = dataA[i]; - } - //杈撳叆鎺у埗浣� - data[6] = (byte) 0xFF; - data[7] = (byte) 0x07; - data[8] = (byte) 0x80; - data[9] = (byte) 0x69; - byte[] dataB = HexUtil.hexToByteArray(companyKeyB); - //灏嗗瘑鐮佽浆鎹负KeyB - for (int i = 0; i < dataB.length; i++) { - data[i + 10] = dataB[i]; - } - int bIndex = mfc.sectorToBlock(a); - int bCount = mfc.getBlockCountInSector(a); - //鍐欏埌鎵囧尯鐨勬渶鍚庝竴涓潡 - mfc.writeBlock(bIndex + bCount - 1, data); -// byte[] dataa = mfc.readBlock(bIndex + bCount - 1); -// // 淇敼瀵嗙爜 A -// mfc.writeBlock(mfc.sectorToBlock(a) + 3, dataA); -// // 淇敼瀵嗙爜 B -// mfc.writeBlock(mfc.sectorToBlock(a) + 7, dataB); -// } - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; -// callback.isSusses(false); - } finally { -// try { -// mfc.close(); -// } catch (IOException e) { -// e.printStackTrace(); -// } - } + try { + return adapter.changePasword(a, mfc); + } catch (Exception e) { + e.printStackTrace(); } return false; } /** - * 杩斿洖鐩戝惉绫� + * 鍒濆鍖栧崱 + * + * @return */ - public interface NFCCallback { - /** - * 杩斿洖鏄惁鎴愬姛 - * - * @param flag - */ - void isSusses(boolean flag); + public boolean initCard() { + try { + return adapter.initCard(); + } catch (Exception e) { + e.printStackTrace(); + } + return false; } + + } -- Gitblit v1.8.0